У меня есть некоторый очень простой код как
while (scan.hasNextLine())
{
String temp = scan.nextLine();
System.out.println(temp);
}
где сканированием является Сканер по файлу.
Однако на одной конкретной строке, которая является о 6k символах долго, временный файл отключает после чего-то как 2 470 символов. Нет ничего специального о том, когда оно отключает; это посреди слова "Australia". Если я удаляю символы из строки, место, где это отключает изменения; например, если я удалю символы 0-100 в файле затем, то Сканер получит то, что было ранее 100-2570.
Я использовал Сканер для больших строк прежде. Какая-либо идея, что могло идти не так, как надо?
по адресу предположение, у вас может быть мошеннический персонаж в точке отсечки: посмотрите файл в шестнадцатеричном редакторе, а не только в текстовом редакторе. Возможно, есть встроенный нулевой символ или, возможно, \ r
в середине строки? Мне кажется маловероятным, что Scanner.nextLine ()
просто произвольно отрезал бы его.
Еще одна мысль: вы на 100% уверены, что там не все? Возможно, System.out.println разрезает строку - опять же из-за встроенного в нее какого-то "нечетного" символа? Что произойдет, если вы напечатаете temp.length ()
?
РЕДАКТИРОВАТЬ: Я неверно истолковал бит о том, что произойдет, если вы вырежете некоторые символы. Прости за это. Еще несколько вещей, которые нужно проверить:
BufferedReader.readLine ()
вместо Scanner
, все ли он получает? Если все это не получится, я бы просто отлаживал в Scanner.nextLine ()
- одна из приятных особенностей Java заключается в том, что вы можете выполнять отладку в стандартные библиотеки.