Как получить что-то вроде символа EOF из файла в Java
Всем добрый день.
Я использую sableCC, и он принимает в качестве входных данных объект Reader. Например, этот код работает правильно:
compile (new StringReader ("print 1"));
Поскольку StringReader возвращает -1 после окончания строки:
StringReader sr = new StringReader("print 1");
while (sr.ready())
System.out.println (sr.read());
дает:
112
114
105
110
116
32
49
-1
... always -1
Но когда я записываю ту же строку в файл "prog", без каких-либо дополнительных строк или символов, и создаю для него FileReader, компилятор разбивает несуществующую вторую строку, поскольку вместо символа -1 FileReader возвращает символ новой строки:
FileReader fr = new FileReader( new File("prog"));
while (fr.ready())
System.out.println (fr.read());
дает:
112
114
105
110
116
32
49
10
Какой самый короткий способ получить от программы чтения файлов то же поведение, что и от StringReader, или SableCC может позволить сбоку?
1 ответ
Если FileReader
возвращает символ новой строки, потому что в файле есть символ новой строки, даже если ваш текстовый редактор не показывает его.
К сожалению, некоторые редакторы автоматически добавляют новую пустую строку в текстовые файлы при сохранении. Я думаю, например, что emacs и gedit делают это. Попробуйте другой редактор.