2012-01-24 3 views
0
BufferedReader buf2=new BufferedReader(
    new InputStreamReader(new FileInputStream("D:/info.txt"))); 

ファイルの内容を読み取るこれらの2つの方法のうち、より良い方法とその理由は何ですか? Javaのドキュメントからファイルからの読み取り。どちらが良いアプローチですか、なぜですか?

BufferedReader buf=new BufferedReader(new FileReader("D:/info.txt")); 
+2

[InputStreamReaderとFileReaderの可能な複製](http://stackoverflow.com/questions/7991770/inputstreamreader-vs-filereader) – dogbane

答えて

3

どちらの行も同等です。どちらの場合も、BufferedReaderが表示され、ファイルからテキストを読み取ることができます。

最初のアプローチの可能な利点は、あなたがたとえば、あなたはファイルの読み込みに使用する文字エンコーディングを指定するには、わずかにそれを変更することができるということです。

BufferedReader buf2 = new BufferedReader(new InputStreamReader(
    new FileInputStream("D:/info.txt"), "UTF-8")); 
FileReaderはあなたが指定することはできません

文字エンコーディングは常にプラットフォームのデフォルトの文字エンコーディングを使用しますが、これは必ずしもあなたが望むものではありません。

1

FileReaderのは、文字のストリームを読み込むためのものです。生のバイトストリームを読み込むには、FileInputStreamの使用を検討してください。

したがって、要件によって異なります。より明確にするために

は読み続ける:

FileReaderのネットワーク接続ストリームを扱うことができない、など

FileReaderのは、エンコーディングの世話が、plaformのデフォルトのエンコーディングを使用し、それゆえの限界プラットフォーム独立性はありません。

したがって、ほとんどの場合、FileReaderを忘れてください。

1

読者はテキストI/O用で、ストリームはバイナリI/O用です。 InputStreamで回避できるReaderを使用している間は、Encoding/Decodingの問題を処理する必要があります。

詳しくはFileInputStream vs FileReaderをご覧ください。

1

そのまま使用すると、どちらもまったく同じ効果があります。ただし、InputStreamReaderを使用すると、テキストエンコーディングをコンストラクタの2番目のパラメータとして指定できます。ほとんどの場合、There Ain't No Such Thing as Plain Textが必要です。

関連する問題