●ストリーム - 基本 -

  1.  □ ストリームの話…

      スーパークラスは以下の4つ

      1. InputStream

        bynary データの入力 このクラスの実装は以下のとおり

        1. Fileアクセス機能の実装

          FileInputStream

          readメソッドで1バイトずつ読む

        2. バッファリング機能の実装

          BufferdInputStream

          ストリームを新しく作らない。実在する他のストリームをコンストラクタに必要とする

          readメソッドで指定されたバイト数読む

      2. OutputStream

        bynaryデータの出力 このクラスの実装は以下のとおり

        1. Fileアクセス機能の実装 

          FileOutputStream

          writeメソッドで1バイトずつ書く

        2. バッファリング機能の実装

          BufferdOutputStream

          ストリームを新しく作らない。実在する他のストリームをコンストラクタに必要とする

          writeメソッドで指定されたバイト数ずつ書く

      3. Reader

        charデータの入力 このクラスの実装は以下のとおり

        1. Fileアクセス機能の実装 

          FileReader

          readメソッドで11文字ずつ読む

        2. バッファリング機能の実装

          BufferdReader

          ストリームを新しく作らない。実在する他のストリームをコンストラクタに必要とする 

          readLineメソッドで1行読む

      4. Writer

        charデータの出力 このクラスの実装は以下のとおり

        1. Fileアクセス機能の実装 writeメソッドで書く

          FileWriter

          writeメソッドで1文字ずつ読む

        2. バッファリング機能の実装

          BufferdWriter

          ストリームを新しく作らない。実在する他のストリームをコンストラクタに必要とする

          writeメソッドで指定された文字数ずつ書く

  2.  □ コード…

    1. バッファリングする

      byte[] b=new byte[1024];
      BufferdInputStream fis=new BufferdInputStream(new FileInputStream("in.dat"));
      BufferdInputStream fos=new BufferdInputStream(new FileOutputStream("out.dat"));
      int len;
      while((len=fis.read(b,0,1024))!=EOF){len++}
      〜途中処理〜
      while((fos.write((b,0,len))!=EOF){}
      }
      fis.close();
      fos.close();

    2. バッファリングしない

      FileInputStream fis=new FileInputStream("in.dat");
      FileOutputStream fis=new FileOutputStream("out.dat");
      int b;
      while((b=fis.read())!=EOF;){
      fos.write((byte)b);
      }
      fis.close();
      fos.close();