0

hello という単語を含む test.txt というテキスト ファイルがあります。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()まさにそれが想定されていることを行っています:

1文字を読み取ります。このメソッドは、文字が使用可能になるか、I/O エラーが発生するか、ストリームの終わりに到達するまでブロックされます。

(強調追加)

BufferedReader.readLine()代わりに、ループで呼び出すことができます。

于 2013-05-19T21:18:42.303 に答える
2

javadocが示すように、read() メソッドは 1 つの char を読み取り、それを 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 になるまで 1 行ずつ読み取ります。

于 2013-05-19T21:18:47.513 に答える