如何在java中从文件中获取类似EOF符号的smth

时间:2012-04-14 06:35:03

标签: java sablecc

美好的一天,每个人。

我正在使用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时,编译器会在不存在的第二行上中断,因为FileReader不返回-1字符,而是返回换行符:

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 个答案:

答案 0 :(得分:2)

如果FileReader返回一个换行符,那么因为 文件中有一个换行符,即使你的文字编辑器没有显示它

不幸的是,有些编辑在保存时会自动在文本文件中添加一个新的空行。我认为例如emacs和gedit都这样做。尝试使用其他编辑器。