Дважды проверьте, что вы используете один и тот же входной файл в обоих случаях. Используете ли вы полные пути при открытии файла? Если файлы разные, это объясняет, почему регулярное выражение работает с одним, а не с другим.
Пожалуйста, добавьте две вещи к вопросу. 1) фрагмент кода о том, как файл открывается, и 2) фрагмент кода использования регулярного выражения. Интересное наблюдение: почему java.util.Scanner.hasNextLine(libgcj.so.10)
использует регулярное выражение? Вы должны были передать один?
Не уверен, почему вы используете hasNextLine (). Попробуйте с hasNext () после установки разделителя в качестве разделителя строк. См. эту страницу для дополнительных примеров.
private static void readFile(String fileName) {
try {
Scanner scanner = new Scanner(new File(fileName));
scanner.useDelimiter
(System.getProperty("line.separator"));
while (scanner.hasNext()) {
System.out.println(scanner.next());
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Либо разделитель, используемый hasNextLine()
, равен null
, либо сканируемая строка ввода равна null
. Распечатайте ошибочную строку ввода из файла, когда NPE брошен. Без вашего кода это просто выстрел в темноте, но примерно так:
[в или около pkg.TextTransmitServer.sendText (TextTransmitServer.java:50)]
try {
String currentLine = null;
String previousLine = null;
while (scanner.hasNext()) {
previousLine = currentLine;
currentLine= parseLine(scanner.next());
}
}
catch (NullPointerException npe) {
System.out.println("previous line: " + previousLine);
System.out.println("current line: " + currentLine);
npe.printStackTrace();
}