К сожалению, с вашим кодом очень много проблем. Вот один , который сразу бросается мне в глаза.
Вы используете строковую манипуляцию для создания имени файла, которое вы передаете конструктору FileReader
, несмотря на тот факт, что, насколько я вижу, открываемый файл - это файл, возвращенный из списка каталога. Это просто напрашивается на неприятности. Вместо этого лучше написать код, подобный этому ...
// Lots of things are omitted; this is just a sketch...
String path = "...";
File currentDIR = new File(path);
for (File fX : currentDIR.listFiles()) {
try {
BufferedReader fINx = new BufferedReader(new FileReader(fX));
// ...
} catch (IOException e) {
e.printErrorStack();
}
}
Однако у вас больше проблем, чем это. Например, использование sq.clear()
имеет неприятный запах кода. Вы только что убрали ссылку на этот Set
в Map
; почему вы снова удаляете его содержимое? Переменная выпадает из области видимости; Вы можете просто пропустить этот код. Последствия нисходящего потока этого clear()
состоят в том, что позднее result_m
будет пустым набором, поэтому его тест contains
всегда будет возвращать false. Я не могу опровергнуть, является ли это причиной вашего мошеннического ноля, но это должно быть неправильно исходя из того, что вы утверждаете, что хотите сделать.
Попробуйте преобразовать этот код в несколько небольших частей, которые легче проверить. В качестве первого варианта я предлагаю: закрытый метод для получения набора слов из файла (предоставляется в качестве аргумента), закрытый метод для сравнения набора слов с базой данных и метод, который объединяет эти два с некоторым циклом для достижения Ваша общая цель.