アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

メリットデメリットというか…用途が違います。



InputStreamReader/Writer は文字ストリーム←→バイトストリームの変換
BufferedReader/Writer は文字列 / 配列 / 行をバッファリングして入出力
FileReader/Writer はテキストデータの入出力

BufferedReader/Writerは、その名の通りバッファリングをしてデータの入出力を行ないますので、文字数の多いテキストファイルを読み込む時等はFileInputStream やFileOutputStream を使用するよりも、BufferedReader/Writer を使用した方が効率が良い場合があります。
    • good
    • 0

Javaの入出力は、およそ4種類に分けるとわかりやすくなります。



入力の
   Reader属 : テキスト入力を受け持つ
   InputStream属 : バイナリ入力を受け持つ

出力の
   Writer属 : テキスト出力を受け持つ
   OutputStream属 : バイナリ出力を受け持つ

さらに、この下に、いくつか種類があります。

・入出力先のちがい
 たとえば、FileReaderはFileからテキスト情報を読み、
StringReaderは文字列からテキスト情報を読むといった具合です。

・入出力するデータのちがい
 たとえばDataOutputStreamはプリミティブ型のみを扱い、
ObjectOutputStreamはクラスも扱います。

・付加する機能のちがい
 BufferedInputStreamを他のストリームにつなげると、データがバッファされ効率が上がります。
LineNumberReaderを使うと、行番号を管理することができます。

それで、Javaの入出力で色々なことをやろうと思ったら、
これらを組み合わせてストリームを生成します。
たとえば

InputStream is = new BufferedStream(new FileInputStream("sample.dat"));

なんてすると、ファイル入力にバッファをつけたストリームを作ることができるのです。
(これは2重にストリームを使ってますが、3重、またはそれ以上に重ねることもあります)
組み合わせて使うので、どれも必要な入出力のための部品なのです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!