Есть проблема со сканером, читающим ваш файл, но я не уверен, что это такое.Он ошибочно полагает, что он достиг конца файла, когда этого не произошло, возможно, из-за какой-то классной строковой кодировки.Попробуйте использовать объект BufferedReader, который вместо этого оборачивает объект FileReader.
например,
private static Set<String> posible2(String posLoc) {
Set<String> result = new TreeSet<String>();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(new File(posLoc)));
String availalbe;
while((availalbe = br.readLine()) != null) {
result.add(availalbe);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
Редактировать
Я попытался свести вашу проблему к минимуму, итолько этого было достаточно, чтобы выявить проблему:
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(new File(FILE_POS));
int count = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.printf("%3d: %s %n", count, line );
count++;
}
Я проверил объект Scanner с помощью printf:
System.out.printf("Str: %-35s size%5d; Has next line? %b%n", availalbe, result.size(), s.hasNextLine());
и показал, что он думал, что файл закончился.Я занимался постепенным удалением строк из данных в файл, чтобы увидеть, какие строки вызвали проблему, но оставлю это вам.