繁体   English   中英

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

[英]How to get an smth like EOF symbol from file in 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时,编译器会在不存在的第二行上中断,因为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可能允许横向?

如果FileReader返回一个新的行字符那么这是因为文件中的新行字符,即使你的文本编辑器中不显示它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM