如何使用Java中的BufferedReader读取文件结尾(EOF)?

时间:2013-08-01 10:27:07

标签: java io bufferedreader

我在EOF Java之前阅读输入时遇到问题。在这里,有单输入,输出考虑每行的输入。

示例:

输入

1
2
3
4
5

输出:

0 
1
0
1
0

但是,我使用Java进行编码,当我输入两个数字时,将打印单个输出。我想在Java中使用EOF单行输入并打印单行输出(终止BufferedReader)。

这是我的代码:

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
StringBuffer pr = new StringBuffer("");

String str = "";
while((str=input.readLine())!=null && str.length()!=0) {
    BigInteger n = new BigInteger(input.readLine());
}

2 个答案:

答案 0 :(得分:22)

你正在消耗一条被丢弃的行

while((str=input.readLine())!=null && str.length()!=0)

并在

阅读bigint
BigInteger n = new BigInteger(input.readLine());

所以尝试从字符串中获取bigint,该字符串被读为

BigInteger n = new BigInteger(str);

   Constructor used: BigInteger(String val)

Aslo将while((str=input.readLine())!=null && str.length()!=0)更改为

while((str=input.readLine())!=null)

查看相关的post string to bigint

readLine()
Returns:
    A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached 

请参阅javadocs

答案 1 :(得分:7)

对于文本文件,当使用BufferReader.read()时,EOF可能为-1,char为char。 我使用BufferReader.readLine()!= null进行了测试,它运行正常。