在java中,当一次读取一个文件时,如何确定EOF?

art*_*00n 0 java input eof

我不得不在一段时间内阅读并使用算法对每个字母进行编码,然后将它们打印到另一个文件中.我知道通常会找到一个文件的结尾,你会使用readLine并检查它是否为null.我正在使用bufferedReader.无论如何要检查是否还有另一个字符要读?基本上,我怎么知道我只读了文件的最后一个字符?

我想我可以使用readline并查看是否有另一行,如果我知道如何确定我当前行的末尾.

我发现File类有一个名为size()的方法,它以伪造的方式转换文件的字节长度.那会告诉我文件中有多少个字符?我可以while(charCount<length) 吗?

gd1*_*gd1 10

我不完全明白你想做什么.我想你可能想逐个字符地阅读文件.如果是这样,你可以这样做:

FileInputStream fileInput = new FileInputStream("file.txt");
int r;
while ((r = fileInput.read()) != -1) {
   char c = (char) r;
   // do something with the character c
}
fileInput.close();
Run Code Online (Sandbox Code Playgroud)

FileInputStream.read()-1当没有更多字符要读时返回.它返回一个int而不是一个char强制转换.

请注意,如果您的文件是UTF-8格式且包含多字节字符,则无法使用此功能.在这种情况下,您必须将FileInputStreamin 包装InputStreamReader并指定适当的charset.为简单起见,我在这里省略它.