• 締切済み

入出力について

Javaの入出力にはFileReader,InputStreamReader等、何種類かありますが、どのような違いがあるのでしょうか? また、これらにはメリット、デメリットがあるのでしょうか。

みんなの回答

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

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)
回答No.1

メリットデメリットというか…用途が違います。 InputStreamReader/Writer は文字ストリーム←→バイトストリームの変換 BufferedReader/Writer は文字列 / 配列 / 行をバッファリングして入出力 FileReader/Writer はテキストデータの入出力 BufferedReader/Writerは、その名の通りバッファリングをしてデータの入出力を行ないますので、文字数の多いテキストファイルを読み込む時等はFileInputStream やFileOutputStream を使用するよりも、BufferedReader/Writer を使用した方が効率が良い場合があります。