- 締切済み
入出力について
Javaの入出力にはFileReader,InputStreamReader等、何種類かありますが、どのような違いがあるのでしょうか? また、これらにはメリット、デメリットがあるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- liar_adan
- ベストアンサー率48% (730/1515)
Javaの入出力は、およそ4種類に分けるとわかりやすくなります。 入力の Reader属 : テキスト入力を受け持つ InputStream属 : バイナリ入力を受け持つ 出力の Writer属 : テキスト出力を受け持つ OutputStream属 : バイナリ出力を受け持つ さらに、この下に、いくつか種類があります。 ・入出力先のちがい たとえば、FileReaderはFileからテキスト情報を読み、 StringReaderは文字列からテキスト情報を読むといった具合です。 ・入出力するデータのちがい たとえばDataOutputStreamはプリミティブ型のみを扱い、 ObjectOutputStreamはクラスも扱います。 ・付加する機能のちがい BufferedInputStreamを他のストリームにつなげると、データがバッファされ効率が上がります。 LineNumberReaderを使うと、行番号を管理することができます。 それで、Javaの入出力で色々なことをやろうと思ったら、 これらを組み合わせてストリームを生成します。 たとえば InputStream is = new BufferedStream(new FileInputStream("sample.dat")); なんてすると、ファイル入力にバッファをつけたストリームを作ることができるのです。 (これは2重にストリームを使ってますが、3重、またはそれ以上に重ねることもあります) 組み合わせて使うので、どれも必要な入出力のための部品なのです。
- HUTABA
- ベストアンサー率27% (436/1611)
メリットデメリットというか…用途が違います。 InputStreamReader/Writer は文字ストリーム←→バイトストリームの変換 BufferedReader/Writer は文字列 / 配列 / 行をバッファリングして入出力 FileReader/Writer はテキストデータの入出力 BufferedReader/Writerは、その名の通りバッファリングをしてデータの入出力を行ないますので、文字数の多いテキストファイルを読み込む時等はFileInputStream やFileOutputStream を使用するよりも、BufferedReader/Writer を使用した方が効率が良い場合があります。