не могу понять почему не проходит валидацию закрытия потоков.
пробовал и в finally ставить. и в разные места в методе run().
HELP
package com.javarush.task.task18.task1823;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/*
Нити и байты
*/
public class Solution {
public static Map<String, Integer> resultMap = new HashMap<String, Integer>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String nameFile;
while (!(nameFile = reader.readLine()).equals("exit")) {
new ReadThread(nameFile);
}
reader.close();
}
public static class ReadThread extends Thread {
public ReadThread(String fileName) throws IOException {
super(fileName);
start();//implement constructor body
}
@Override
public void run() {
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(currentThread().getName());
bis = new BufferedInputStream(fis);
ArrayList<Integer> countArr = new ArrayList<>();
ArrayList<Integer> countArr1 = new ArrayList<>();
while (bis.available() > 0) {
int i = bis.read();
if (!countArr.contains(i)) {
countArr.add(i);
countArr1.add(countArr.indexOf(i), 1);
}
else
countArr1.set(countArr.indexOf(i),countArr1.get(countArr.indexOf(i)) + 1);
}
//System.out.println(countArr + " " + countArr1);
int tmpCount = 0;
int byteFile = 0;
for (int i = 0; i < countArr.size(); i++) {
if (tmpCount < countArr1.get(i)) {
tmpCount = countArr1.get(i);
byteFile = countArr.get(countArr1.indexOf(tmpCount));
}
}
//System.out.println(byteFile + " " + tmpCount);
resultMap.put(currentThread().getName(), byteFile);
//System.out.println(resultMap.keySet() + " " + resultMap.values());
fis.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
} /*finally {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}*/
}
// implement file reading here - реализуйте чтение из файла тут
}
}
/*
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream fis = null;
BufferedInputStream bis = null;
String nameFile;
try {
while (!(nameFile = reader.readLine()).equals("exit")) {
fis = new FileInputStream(nameFile);
bis = new BufferedInputStream(fis);
ArrayList<Integer> countArr = new ArrayList<>();
ArrayList<Integer> countArr1 = new ArrayList<>();
while (bis.available() > 0) {
int i = bis.read();
if (!countArr.contains(i)) {
countArr.add(i);
countArr1.add(countArr.indexOf(i), 1);
}
else
countArr1.set(countArr.indexOf(i),countArr1.get(countArr.indexOf(i)) + 1);
}
//System.out.println(countArr + " " + countArr1);
int tmpCount = 0;
int byteFile = 0;
for (int i = 0; i < countArr.size(); i++) {
if (tmpCount < countArr1.get(i)) {
tmpCount = countArr1.get(i);
byteFile = countArr.get(countArr1.indexOf(tmpCount));
}
}
//System.out.println(byteFile + " " + tmpCount);
resultMap.put(nameFile, byteFile);
System.out.println(resultMap.keySet() + " " + resultMap.values());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}*/