JavaのIOストリームの処理

まず、プロセスフロー:

機能強化、パフォーマンスを提供し、ストリーム上のノード。

ノード及びプロセスフローストリームとの間の第二関係

ノードストリーム(バイトストリーム、文字ストリーム)で IO 最初のライン操作、すべての操作は、それらを介して行われなければなりません。

プロセスストリームは、他のストリームの(効率や運用の柔軟性を向上させるために)処理されてもよいです。

第三に、バッファの流れ

1 、バッファバイトストリーム

BufferedInputStreamを

なBufferedOutputStream

パッケージIOBuffer;

輸入java.io.BufferedInputStreamの。

輸入java.io.BufferedOutputStream。

インポートのjava.io.File;

輸入java.io.FileInputStream;

輸入java.io.FileOutputStreamは、

インポートにjava.io.IOException;

輸入java.io.InputStreamを。

インポートにjava.io.OutputStream;

/ **

 * プロセスストリーム(ストリームバッファバイト)

 * バイトストリームファイルがコピーされます+のバッファの流れを、パフォーマンスを向上させます

 * バッファストリーム(ストリームノード)

 * /

@SuppressWarnings( "すべて")

パブリッククラスDemo01 {

    パブリック静的無効メイン(文字列[] args){

        ストリングsrcPath = "G:/1314.jpg"。

        ストリングDESTPATH = "G:/try/520.jpg"。

        {試します

            コピーファイル(srcPath、DESTPATH)。

        }キャッチ(IOExceptionを電子){

            e.printStackTrace();

        }

    }

    パブリック静的ボイドコピーファイル(文字列srcPath、文字列DESTPATH)は、IOExceptionがスローされます

    {

        // 1 、連絡先ソースが存在する確立するおよびファイル)+ ファイルが存在しなくてもよいです)                

        ファイルSRC =新しいファイル(srcPath)。

        ファイルのDEST =新しいファイル(DESTPATH)。

        (もし!src.isFile())

        {

            System.out.println(「ファイルのみをコピーすることができます」);

            (「新しいIOExceptionをスローファイルのみをコピーすることができます」);

        }

        // 2 、バッファフローストリーム選択バイトの入力ストリーム)      

        InputStreamが=新しいBufferedInputStreamを(新しいFileInputStreamを(SRC))です。

        OutputStreamのOS =新なBufferedOutputStream(新しいのFileOutputStream(DEST));

        3 // 、ファイルのコピーサイクル+ 読み+ 書き

        バイト[]フラッシュ=新しいバイト[1024];

        int型のlen = 0;    

        しばらく(-1!=(LEN = is.read(フラッシュ)))

        {

            // 書き込み

            os.write(フラッシュ、0、LEN)。

        }

        os.flush(); // ブラシを強制           

        // 最初の開閉後にストリームを閉じます

        os.close();

        近くにあります();

    }

}

2 、文字ストリームバッファ

BufferedReaderの   新しいのreadLine()テキストの行を読み込みます。

BufferedWriterの   新しい改行()行区切り文字を書き込みます。

パッケージIOBuffer;

輸入java.io.BufferedReader;

輸入java.io.BufferedWriter。

インポートのjava.io.File;

輸入java.io.FileNotFoundException。

輸入java.io.FileReader。

輸入java.io.FileWriter;

インポートにjava.io.IOException;

/ **

 *

 * 文字ストリームバッファ+ 新しい方法(マルチ状態が発生することができません)

 * /

パブリッククラスDemo02 {

    パブリック静的無効メイン(文字列[] args){

        ストリングsrcPath = "G:/oo.txt"。

        ストリングDESTPATH = "G:/xx.txt"。      

        // ソースを作成します。

        ファイルSRC =新しいファイル(srcPath)。

        ファイルのDEST =新しいファイル(DESTPATH)。

        // 選択フローストリームバッファ後者は新しいメソッドを使用している場合、多型を使用することはできません。

        // 新しいサブクラスは、ポリモーフィック使用できない場合。

        / *リーダーリーダー= NULL;

        ライターライター= NULL;

        リーダー=新しいBufferedReaderの(新規FileReader(SRC))。

        ライター=新しいBufferedWriterの(新しいてFileWriter(DEST));

        reader.read(フラッシュ)

        writer.write(フラッシュ、0、LEN)* /     

        BufferedReaderのリーダー= NULL;

        BufferedWriterのライター= NULL;

        {試します

            リーダー=新しいBufferedReaderの(新規FileReader(SRC))。

            ライター=新しいBufferedWriterの(新しいてFileWriter(DEST));

            // 読み出し動作

            // バッファされたストリームを操作する新しい方法のキャラクター

            文字列の行= NULL; // 読み込む行ずつBufferedReaderの新しいのreadLine()を

            しばらく(ヌル!=(ライン= reader.readLine()))

            {

                writer.write(ライン)。

                //writer.append("\r\n");// 改行

                writer.newLine(); // 行の新しい方法を破ります

            }

            writer.flush();

        }キャッチ(にFileNotFoundException電子){

            e.printStackTrace();

            System.out.println(「ファイルが存在しません」);

        }キャッチ(IOExceptionを電子){

            e.printStackTrace();

        }

        最後に

        {

            (ヌル!=リーダー)の場合

            {

                {試します

                    writer.close();

                    reader.close();

                }キャッチ(IOExceptionを電子){

                    e.printStackTrace();

                }

            }

        }       

    }

}

第四に、変換ストリーム

(A)文字ストリーム、プロセス歪みにバイトストリーム(コードセット、セットデコード)

デコーディング:バイナリ - > デコード文字セット- > キャラ

エンコード:文字 - > 符号化文字集合- > バイナリ

(B)どうして文字化けしていますか?

1 、デコードおよび実際のMT4口座のチュートリアルログイン符号化文字集合は一様ではありません

2 、バイトが欠落している、失われた長さ

(転流によって治療)(iii)のファイルハッシュ

パッケージIOConver;

輸入java.io.UnsupportedEncodingException。

パブリッククラスDemo01 {

    パブリック静的無効メイン(文字列[] args){

        TEST01();

        System.out.println( "-----------");

        TEST02();

    }

    // コード化文字セットが同じ文字セットでなければなりませんデコード

    パブリック静的ボイドTEST01()

    {

        // デコードバイト- > CHAR

        文字列str = " 中国"; // UTF-8

        // コーディングのchar - >バイト

        バイト[]データ=のstr.getBytes()。

        // 統一の文字セットのエンコードとデコード

        System.out.println(新しい文字列(データ));

        {試します

            データ=のstr.getBytes( "GBK") ; // セット符号化された文字セットエンコーディング

            // 文字化けしませ統一文字セット、

            System.out.println(新しい文字列(データ)) ; // デコード

        }キャッチ(にUnsupportedEncodingException電子){

            e.printStackTrace();

        }

        バイト[] DATA2。

        {試します

            // コーディング

            DATA2 = " 中国" .getBytes( "GBK")。

            // デコード

            列str =新しい文字列(DATA2、 "GBK");

            //列str =新しい文字列(DATA2) ; // デフォルトのデコードを指定しないUTF-8 文字化けを

            System.out.println(新しいString(文字列));

        }キャッチ(にUnsupportedEncodingException電子){

            e.printStackTrace();

        }               

    }

    // バイトが行方不明、行方不明の長さ

    パブリック静的ボイドTEST02(){

        文字列str =「中国」。

        []データバイト。

        データ= str.getBytes(); // 符号化

        // バイト数は完全ではありません

        System.out.println(新しい文字列(データ、0,4));

    }

}

結果:

й

中国

-----------

パッケージIOConver;

輸入java.io.BufferedReader;

輸入java.io.BufferedWriter。

インポートのjava.io.File;

輸入java.io.FileInputStream;

輸入java.io.FileOutputStreamは、

インポートにjava.io.IOException;

輸入java.io.InputStreamReader。

輸入java.io.OutputStreamWriterが、

/ **

 * 変換ストリーム:バイト文字に

 * 1 、出力ストリームのOutputStreamWriterの   エンコーディング

 * 2 、入力ストリームInputStreamReaderの   デコード

 * /

パブリッククラスDemo02 {

    公共の静的な無効メイン(文字列[]引数)はIOExceptionが{スロー

        // 入力ファイルのデコード文字のバイトが)    表示されるように読まれます  

        // デコードされた文字を指定して設定     をBufferedReaderの文字ストリーム--InputStreamReader 転流--FileInputStream バイトストリームを

        BufferedReaderのBR =新しいBufferedReaderの

                (

                    新しいInputStreamReaderの

                    (

                        新しいFileInputStreamを(新しいファイル( "G:/writer.txt"))、 "UTF-8"

                    )

                ); // 文字セットのデコードを指定

        // ファイルのエンコーディング(文字・ツー・バイト)を書き込みます

        BufferedWriterの幅BW =新しいBufferedWriterの

                (

                    新しいのOutputStreamWriter

                    (

                        新しいのFileOutputStream(新しいファイル( "G:/try/abdec.txt"))、 "UTF-8"

                    )

                );

        文字列情報= NULL;

        しばらく(ヌル!=(情報= br.readLine()))

        {

            System.out.println(情報)。

            bw.write(情報+ "\ rを\ n" は);

        }

        bw.flush();

        bw.close();

        br.close();

    }

}

結果:

誰もが、彼らの若さを持っています

それぞれの若者が、物語を持っています

それぞれの物語は後悔を持っています、

残念ながら、彼の素晴らしいのそれぞれが、何もありません。ouye

----------------

オリジナルリンク: https://blog.csdn.net/scgaliguodong123_/article/details/45932481

おすすめ

転載: www.cnblogs.com/benming/p/11791665.html