Advertisement
mamant38

Нить ReadThread

Apr 17th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.04 KB | None | 0 0
  1. package com.javarush.task.task18.task1823;
  2.  
  3. import javax.swing.*;
  4. import java.io.*;
  5. import java.util.*;
  6.  
  7. /*
  8. Читайте с консоли имена файлов, пока не будет введено слово "exit".
  9. Передайте имя файла в нить ReadThread.
  10. Нить ReadThread должна найти байт, который встречается в файле максимальное число раз, и добавить его в словарь resultMap,
  11. где параметр String - это имя файла, параметр Integer - это искомый байт.
  12. Закрыть потоки.
  13.  
  14.  
  15. Требования:
  16. 1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "exit".
  17. 2. Для каждого файла создай нить ReadThread и запусти ее.
  18. 3. После запуска каждая нить ReadThread должна создать свой поток для чтения из файла.
  19. 4. Затем, нити должны найти максимально встречающийся байт в своем файле и добавить его в словарь resultMap.
  20. 5. Поток для чтения из файла в каждой нити должен быть закрыт.
  21. */
  22.  
  23. public class Solution {
  24.     public static Map<String, Integer> resultMap = new HashMap<String, Integer>();
  25.  
  26.     public static void main(String[] args) throws IOException, InterruptedException {
  27.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  28.  
  29.         List<String> list = new ArrayList<>();
  30.  
  31.         String fileName = reader.readLine();
  32.  
  33.         while (!fileName.equals("exit")){
  34.             list.add(fileName);
  35.             fileName = reader.readLine();
  36.         }
  37.         for (String file : list) {
  38.            ReadThread run =  new ReadThread(file);
  39.            run.start();
  40.            run.join();
  41.         }
  42.  
  43.     }
  44.  
  45.     public static class ReadThread extends Thread {
  46.  
  47.         public ReadThread(String fileName) throws IOException {
  48.             this.fileName = fileName;
  49.             FileInputStream fileInputStream = new FileInputStream(fileName);
  50.             while (fileInputStream.available() > 0) {
  51.                 int data = fileInputStream.read();
  52.  
  53.                 if (map.containsKey(data)) {
  54.                     map.put(map.get(data) + 1, data);
  55.                 } else {
  56.                     map.put(1, data);
  57.                 }
  58.             }
  59.         }
  60.             Map<Integer, Integer > map = new TreeMap<>();
  61.  
  62.             private String fileName = null;
  63.             @Override
  64.         public void run() {
  65. //implement constructor body
  66.             Map.Entry< Integer, Integer > lastItem = map.lastEntry();// почему выдает ощибку ?
  67.                 resultMap.put(fileName, lastItem.getValue());
  68.         }
  69. }
  70.  
  71.  
  72.  
  73. // implement file reading here - реализуйте чтение из файла тут
  74.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement