JAVAにおけるバイト入出力ストリーム(OutputStream,InputStream)と文字入出力ストリーム(FileWriter,FileReader)についてのまとめ

3753 ワード

***
どのファイルでも本質的にバイトで構成されているので、Javaでは.
バイトストリームは、画像、オーディオなど、任意の形式のファイルを読み込むことができますが、文字ストリームは一般的にテキスト形式のファイルを読み取るために使用されます.
基本的なバイトストリームは次のとおりです.
InputStream,OutputStream:(   ,             )
FileInputStream,FileOutputStream
System.in,System.out:(       )
PrintStream:(     )

文字ストリーム:
reader,writer:(           )
FileWriter, FileReader
PrintWriter:(     )
BufferedWriter,BufferedReader :(     ,   )

文字ストリームとバイトストリームの変換クラス(2つのストリーム間の変換のブリッジ)
InputStreamReader,OutputStreamWriter:(      ,   )

オブジェクト操作フロー
ObjectOutputStream,   
  writeObject
  ObjectOutputStream(OutputStream out)
ObjectInputStream,   
  readObject
  ObjectInputStream(InputStream in)
(  :  d         ,              
     java.io.Serializable         
  :Exception in thread "main" java.io.NotSerializableException: Student
               (java.io.Serializable),    。
Exception in thread "main" java.io.EOFException
                   ,    。(                (-1  null),    )
                             
Serializable:     ,       ,       ,       。
         IO        ,          )

それは、バイトストリームまたは文字ストリームの抽象クラス親の使用方法について、サブクラスインスタンスを指す方法、すなわちアップシフトを使用することができる.例:
        //   
        InputStream is = new FileInputStream("a.txt");
        OutputStream os = new FileOutputStream("b.txt");
        OutputStream os1 = new FileOutputStream("b.txt",true);
        //true         

        //   
        Reader r = new FileReader("a.txt");
        Writer w = new FileWriter("b.txt");
        Writer w1 = new FileWriter("b.txt",true);
        //true         

        //       
        BufferedReader br = new BufferedReader(new FileReader("a.txt"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
        BufferedWriter bw1 = new BufferedWriter(new FileWriter("b.txt",true));
        //true         

        //   
        PrintWriter pw = new PrintWriter(new FileWriter("B.txt"),true);
        //true          

        //     
        ObjectInputStream oi = new ObjectInputStream(new FileInputStream("a.txt"));
        ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("b.txt"));
        ObjectOutputStream os1 = new ObjectOutputStream(new FileOutputStream("b.txt",true));
        //true         

        //      ,           
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //          ,            ,          
        //                ,OutPutStreamWriter,                 ,          
        //           ,            ,OutPutStreamWriter

        //       
        //public static final InputStream in;     ,           。
        InputStream is = System.in;
        Scanner sc = new Scanner(System.in);

        //public static final PrintStream out:     ,         
        System.out.println();

全体的に,各ストリームには独自の特徴があり,実際の応用と結びつけて各入出力ストリームを用いる.
バイトストリームは、任意のタイプのファイルを読み書きできますが、文字配列は文字単位でのみ読み書きできます.
文字ストリームはテキストタイプのファイルを読み取ることができ、効率的に読み書きすることができ、1行のデータを一度に読み書きすることも、1つの文字配列を一度に読み取ることもできます.
効率的なバッファストリームは、文字ストリームのアップグレード版に相当し、文字ストリームを読み書き手段として利用し、より迅速な読み書き方法を提供します.
変換ストリームは、バイトストリームから文字ストリームへの橋渡しであり、バイトストリームが読み取ったバイト(byte)を自動的に文字に復号することに相当し、getByte()からバイトに変換したり、new String()から文字に変換したり、読み書きしたり、出力したりする必要がなく、より便利な操作を提供する.
文字印刷ストリームは出力のみ入力できず、入力ストリームがなくprintlnメソッドで自動的に改行でき、バイトは出力できませんが、他の任意のタイプを出力できます.オブジェクト作成時のパラメータautoflushを構成することで、自動リフレッシュを実現できます(println,printf,formatを呼び出す場合にのみ役立ちます).