我正在使用FileReader和read(char[] ch)方法从带有read()对象的文件中读取所有字符。但是,当我尝试使用这两种方法时,我只得到一个输出。
下面是我的代码片段:
class FR
{
void filereader() throws Exception
{
File f = new File("abc.txt");
FileReader fr = new FileReader(f);
char[] ch = new char[(int)f.length()];
fr.read(ch);
for (char ch1 : ch)
{
System.out.print(ch1);
}
System.out.println("\n*********************************");
int i = fr.read();
while(i != -1)
{
System.out.print((char)i);
i = fr.read();
}
fr.close();
}
}请有人解释一下为什么while部件没有执行吗?
发布于 2016-03-22 07:19:47
当你表演时:
char[] ch = new char[(int)f.length()];
fr.read(ch);您正在有效地读取整个文件。
在此之后,每次对read的调用都将返回-1,因为这是文件的结束:
返回已读取的字符数,如果已到达流的末尾,则返回-1。
您可以看到一个使用输入/输出这里的例子。
如果您想逐字或逐行读取文件,您可能需要查看扫描仪。
发布于 2016-03-22 07:24:41
您的fr.read(ch)调用正在读取整个文件。
在此之后调用fr.read()将检测到EOF,而不会返回任何字符。
在更改代码读取部分的顺序时,您将看到不同的行为。
您还应该检查fr.read(ch)调用读取的字符数。这应该能给出线索。
https://stackoverflow.com/questions/36148246
复制相似问题