2012-07-17 7 views
6

は、私たちは本当にここにDataInputStreamを必要としないデータ入力ストリーム

FileInputStream fstream = new FileInputStream ("file1.txt"); 
BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 

FileInputStream fstream = new FileInputStream ("file1.txt"); 
DataInputStream in = new DataInputStream(fstream); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

の違いは何であるのために必要ですか?

+1

をバッファリングされたバイナリの場合

BufferedReader br = new BufferedReader(new FileReader(file)); 

をバッファリングされたテキストの

。 –

答えて

2

InputStreamReader()コンストラクタに渡されるオブジェクトの重要な点は、同期保持の重みを負うオブジェクトになることです。 FileInputStreamを呼び出したくない場合は、2番目の方法があります。 the source of Reader.

1

これは、データ入力ストリームによって、アプリケーションは基本的なJavaデータ型を基になる入力ストリームから機械に依存しない方法で読み取ることができます。アプリケーションでは、データ出力ストリームを使用して、後でデータ入力ストリームで読み取ることができるデータを書き込みます。チェックJavaDoc

BufferedReader:文字、配列、行の効率的な読み込みを可能にするために文字をバッファリングする文字入力ストリームからテキストを読み込みます。

FileInputStream:FileInputStreamを使用すると、ファイルデータをバイト単位で読み込みます。

2

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

データ入力ストリームを使用すると、アプリケーションは基本のJavaデータ型 を基本の入力ストリームからマシンに依存しない方法で読み取ることができます。 アプリケーションでは、データ出力ストリームを使用してデータを書き込みます。これは後でデータ入力ストリームによって読み取られる になります。

DataInputStreamは、マルチスレッドアクセスでは必ずしも安全であるとは限りません。

FileInputStreamは非常に基本的なインターフェイスです。 数字だけでなく、文字列(または複雑なオブジェクト)を読みたい場合、それは苦痛です。したがって、第2の入力ストリームを使用して最初の「ラッピング」を行い、より便利なインターフェイスを提供します。 DataInputStreamは、これらの1つです。

1

いいえ、最終的にBufferedReaderでデータを読み取るため、DataInputStreamは必要ありません。

DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("file1.txt"))); 

編集:

なぜあなたが使用して "FILE1.TXT" を作成したとき

FileInputStream fstream = new FileInputStream ("file1.txt"); 
BufferedInputStream br = new BufferedInputStream(fstream); 
DataInputStream dis = new DataInputStream(br); 

通常、これは手をつないで行くだろう。代わりに意味があるになるだろう何

それは本当に意味をなさない場合は、Javaで許可されていますか?これはDecorator patternであり、これはデコレータパターンの欠点の1つです。

4

DataInputStreamを使用するのは、コードの異なる部分のコピー&ペーストに起因すると思われるよくある間違いです。ファイルをテキスト(例: BufferedReaderまたはバイナリ。 DataInputStreamその両方を使用したいと思うことは非常にありそうもなく、混乱を招く可能性があります。あなたがテキストを読みたい場合に便利よりもその多くの混乱、DataInputStreamを使用しないでください

DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); 
関連する問題