0

jar アーカイブからプログラムを実行しているときに、テキスト ファイルを読み込もうとしています。ファイルを読み取るために InputStream を使用する必要があることに気づきました。コードのスニペット:

buffer = new BufferedInputStream(this.getClass().getResourceAsStream((getClass().getClassLoader().getResource("English_names.txt").getPath())));


System.out.println(buffer.read()+" yeas");

この行でSystem.out.println(buffer.read()+" yeas");プログラムは停止し、それ以降は何も起こりません。オブジェクトの内容を出力すると、bufferそれはnullではありません。何が問題なのですか?

4

2 に答える 2

1

からInputStream#read():

このメソッドは、入力データが使用可能になるか、ストリームの終わりが検出されるか、例外がスローされるまでブロックされます。

基本的に、ストリームはコンテンツを待っているように見えます。ストリームを構築した方法だと思います。構築を次のように単純化できます。

InputStream resourceStream = getClass().getResourceAsStream("/English_names.txt");
InputStream buffer = new BufferedInputStream(resourceStream);

resourceStreamまた、null でないことも確認します。

于 2012-09-09T21:50:17.727 に答える