変換ストリームと標準入出力ストリーム

13489 ワード

変換ストリームは、文字ストリームとバイトストリームの間の変換を提供します。


InputStreamReaderとOutputStreamWriter
バイトストリームのデータがすべて文字である場合、文字ストリームに変換する操作がより効率的です.
/*
 :inputStreamReader OutputStreamWriter
 :   --->  
         --->  
 */
@Test
public void test1(){
    // 
    BufferedReader br =null;
    BufferedWriter bw = null;
    try {
        File file = new File("a.txt");
        FileInputStream  fis  = new FileInputStream(file);
        InputStreamReader  isr  = new InputStreamReader(fis, "GBK");
        br = new BufferedReader(isr);

        // 
        File file2 = new File("a5.txt");
        FileOutputStream fos = new FileOutputStream(file2);
        OutputStreamWriter osw = new OutputStreamWriter(fos);

        bw = new BufferedWriter(osw);
        String str;
        while ((str = br.readLine())!=null){
            bw.write(str);
            bw.newLine();
            bw.flush();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        if (bw != null){
            try {
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (br!= null){
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }


}

ひょうじゅんにゅうしゅつりょくりゅう

/*
 
 : , 
 "e" "exit" , 
 */
@Test
public void test2(){
    BufferedReader br = null;
    try {
        InputStream is = System.in;
        InputStreamReader isr = new InputStreamReader(is);
        br = new BufferedReader(isr);

        String str ;
        while (true){
            System.out.println(" :");
            str = br.readLine();
            if (str.equalsIgnoreCase("e") || str.equalsIgnoreCase("exit")){
                break;
            }
            String str1 = str.toUpperCase();
            System.out.println(str1);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        if (br!=null){
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

コードテーブルの由来


コンピュータはバイナリデータしか認識できず、初期の由来は電気信号である.コンピューターの応用を容易にするために、各国の文字を認識することができます.それぞれの国の文字を数字で表し、一つ一つ対応して表を作ります.これがエンコードテーブルです.符号化テーブルの由来コンピュータはバイナリデータしか認識できず,初期の由来は電気信号であった.コンピューターの応用を容易にするために、各国の文字を認識することができます.それぞれの国の文字を数字で表し、一つ一つ対応して表を作ります.これがエンコードテーブルです.

一般的なエンコーディングテーブル


ASCII:アメリカ標準情報交換コード.1バイトの7ビットで表すことができます.ISO 8859-1:ラテンコード表.欧州コードテーブルは1バイトの8ビットで表される.GB 2312:中国の中国語コード表.GBK:中国の中国語コード表がアップグレードされ、より多くの中国語文字記号が融合しました.Unicode:国際標準コードで、多くの文字が融合しています.すべての文字は2バイトで表され、Java言語ではunicode UTF-8が使用されます.最大3バイトで1文字を表します.