我不得不暂时阅读并使用算法对每个字母进行编码,然后将它们打印到另一个文件中。我知道通常会找到一个文件的结尾,你会使用readLine并检查它是否为null。我正在使用bufferedReader。无论如何要检查是否还有另一个字符要读?基本上,我怎么知道我只读了文件的最后一个字符?
我想我可以使用readline并查看是否有另一行,如果我知道如何确定我当前行的末尾。
我发现File类有一个名为size()的方法,它假定地转换文件的长度(以字节为单位)。那会告诉我文件中有多少个字符?我能做while(charCount<length)
吗?
答案 0 :(得分: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
。它返回int
而不是char
,因此强制转换。
请注意,如果您的文件采用UTF-8格式且包含多字节字符,则无法使用此功能。在这种情况下,您必须将FileInputStream
包装在InputStreamReader
中并指定相应的字符集。为简单起见,我在这里省略它。
答案 1 :(得分:0)
根据我的理解,如果没有剩下的字符,缓冲区将返回-1。所以你可以写:
BufferedInputStream in = new BufferedInputStream(new FileInputStream("filename"));
while (currentChar = in.read() != -1) {
//do something
}
in.close();