• 締切済み

入出力について

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 を使用した方が効率が良い場合があります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 入出力について

    下記のソースコードで、2点不明な点がありますので ご教授お願い致します。 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class ab3{ public static void main(String args[]){ BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in)); try{ System.out.println("名前を入力してください"); String myString = myReader.readLine(); System.out.println(myString + "さん、こんにちわ!"); }catch(IOException e) { } } } 1. BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in)); ここのソースコードについてですが、 new BufferedReader(new InputStreamReader ^^^ ^^^ (System.in)); 「new」が二つもついていますが、何故二つも つける必要があるのでしょうか。 一つであっても問題はないと思われ、 2番目の「new」を取り除くと、エラーが表示されて しまいます。 また、上記ソースコードを BufferedReader myReader ; myReader = InputStreamReader(System.in)); と分割して書こうとしてもエラーが表示されてしまいます。 2. String myString = myReader.readLine(); ここの部分ですが、これはString型のインスタンス(コンストラクタ?)を 作っていると思われますが、この部分を String myString ; myString = myReader.readLine(); または、 String myString = new myReader.readLine(); としてたら、エラーが表示されてしまいます。 JAVAを初めて間もなく、質問の内容がわかりづらいと 思われます。入出力について理解するのに苦労して おりますが、何卒ご教授の程お願い致します。

    • ベストアンサー
    • Java
  • OSの入出力管理

    OSの入出力制御とCPUの制御装置の入出力装置制御との違いがわかりません。同じことしてるの?それとも違うんですか?教えてください

  • CSV読み込み 文字化け

    失礼いたします。 以前のログを見てエンコードを設定してみたのですが、出力が文字化けします。ローカルファイルを読み込んでコンソール出力しているだけなのですが・・・。 分かる方、よろしくお願いします。 -------------------ソースはここから import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; // import java.io.FileReader; FileReaderからInputStreamReaderに変更済み import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ReadCSV { public static void main(String[] args) { try { File csv = new File("C:\\AP.csv"); // BufferedReader br = new BufferedReader(new FileReader(csv)); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"EUC_JP")); // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"MS932")); while (br.ready()) { String line = br.readLine(); StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { System.out.print(st.nextToken() + "\t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { キャッチ処理 }

    • ベストアンサー
    • Java
  • C言語の入出力関数の違い

    C言語を勉強しています。 自分が知っている入出力を行う関数は printf scanf fprintf fscanf sprintf sscanf gets puts getc putc fgets fputs fgetc fputc なのですがそれぞれのメリット・デメリットの違いがまだあいまいです。 というかまだ上の4つくらいしかまともに使ったことがありません。 自分の考えでは、 ・上の4つは書式を指定でき、ファイルから読み込みするときなどは fgetsよりもfscanfが使いやすいと思っています。 ・スペースを読み込みたいときはscanfではなくgetsを使わなければならない。 ・システム開発でscanfを使うことは危険なのでほとんどない。 間違った考え方をしていたり、どのようなデータのときに どの関数を使うのが正しい、常識、と知っている方いらっしゃいましたら 教えてください。

  • JavaとPHPの違い

    JavaとPHPの違い Javaのメリット、デメリット、 PHPのメリット、デメリット。 2つの優位性をよかったら教えてください。(下矢印)(下矢印) 発表の資料で困ってます。(下矢印)(下矢印)

  • 入出力回路図の読み方

    センサやそれを繋ぐ計測機器の取説に書かれているような入出力回路図の 読み方がよくわかりません。 あと出力の種類もドライ接点出力、オープンコレクタ出力等ありますが、 これらについてもよくわかっていません。 これらのことを詳しく説明している書籍やHPはありませんか。 あまりに基本的過ぎるせいか詳しい説明をほとんど見かけません。 各種入出力が理解でき、正しい配線が出来るようになりたいです。 よろしくお願いします。

  • java JSP/サ-ブレット

    JAVAの基本的なことを質問します。 JSP/サ-ブレットの違い、 特徴、メリット、デメリット を教えて下さい。

  • アナログ入出力

    よろしくお願いします。 センサーなどでアナログ出力を0-10Vや4-20mA等どちらか選ぶ場合がありますが、両者のメリット・デメリット。選定基準など教えて頂けないでしょうか。

  • ストリーム テキスト

    初心者の質問です。よろしくお願いします。 Javaのストリームを勉強しているのですが、FileReaderでテキストファイル(txt)を入力するにはどうすれば良いのでしょうか? Javaファイルは正しく入力できたのですが。 FileReader fr=new FileReader(args[0]);では、問題があるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 光回線:電力系とNTTの違いとメリット、デメリット

    光回線には何種類かあるようですが 電力系とNTTの違いと そのメリット、デメリットを教えてください。

このQ&Aのポイント
  • Lenovo Tab M8 マグネットスリープカバーを閉じたときに自動的にオフにする設定が可能かどうかについて調査しました。
  • Lenovo Tab M8 マグネットスリープカバーはオフにする設定が対応していない可能性があります。
  • 購入時にオフボタンを押すことでオン/オフができましたが、カバーでオン/オフする仕組みだったため、オフ設定について気になっています。
回答を見る