0

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

我想我可以使用 readline 看看是否还有另一行,如果我知道如何确定我何时处于当前行的末尾。

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

4

2 回答 2

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();

FileInputStream.read()-1当没有更多字符要读取时返回。它返回 anint而不是 achar所以强制转换。

请注意,如果您的文件是 UTF-8 格式并包含多字节字符,这将不起作用。在这种情况下,您必须将其包装起来FileInputStreamInputStreamReader指定适当的字符集。为了简单起见,我在这里省略了它。

于 2013-02-23T20:47:44.487 回答
0

据我了解,如果没有剩余字符,缓冲区将返回 -1。所以你可以写:

BufferedInputStream in = new BufferedInputStream(new FileInputStream("filename"));
while (currentChar = in.read() != -1) { 
    //do something 
}
in.close();
于 2013-02-23T20:53:47.650 回答