0

我有一个名为 test.txt 的文本文件,其中包含单词 hello。我正在尝试使用 Reader.read() 方法读取它并将内容打印到控制台。但是,当我运行它时,我只是在控制台上打印了数字 104,而没有其他任何内容(即使我将文本更改为更多/更少的字符,我也会打印相同的数字)。任何想法为什么它会以这种方式运行以及如何修改这个现有代码以在控制台上将 test.txt 的内容打印为字符串?这是我的代码:

public static void spellCheck(Reader r) throws IOException{
    Reader newReader = r;
    System.out.println(newReader.read());
}

以及我用来测试上述内容的主要方法:

public static void main (String[] args)throws IOException{
    Reader test = new BufferedReader(new FileReader("test.txt"));
    spellCheck(test);
}
4

2 回答 2

4

read()正在做它应该做的事情:

读取单个字符。此方法将阻塞,直到字符可用、发生 I/O 错误或到达流的末尾。

(重点补充)

相反,您可以BufferedReader.readLine()循环调用。

于 2013-05-19T21:18:42.303 回答
2

正如javadoc所示,read() 方法读取单个字符,并将其作为 int 返回(以便能够返回 -1 以指示流的结束)。要将 int 打印为 char,只需将其转换:

int c = reader.read();
if (c != -1) {
    System.out.println((char) c);
}
else {
    System.out.println("end of the stream");
}

要读取所有内容,请循环直到获得 -1,或逐行读取直到获得 null。

于 2013-05-19T21:18:47.513 回答