Java—IO流 字符流

  java的文本(char)是16位無符號整數,是字符的unicode編碼(雙字節編碼)。java

  文件是byte byte byte ... 的數據序列。編碼

  文本文件是文本(char)序列按照某種編碼方案(uft-八、utf-16be、gbk)序列化爲byte的存儲結果。spa

  • 字符流(Reader、Writer)-->操做的是文本、文本文件

  1.字符的處理,一次處理一個字符code

  2.字符的底層仍然是基本的字節序列blog

  3.字符流的基本實現:unicode

  InputStreamReader是字節流通向字符流的橋樑:它使用指定的 charset 讀取字節並將其解碼爲字符。字符串

  OutputStreamWriter是字符流通向字節流的橋樑:可以使用指定的 charset 將要寫入流中的字符編碼成字節。it

public class ISReaderAndOSWriter {

    public static void main(String[] args) throws IOException {
        FileInputStream in = new FileInputStream("F:\\javaio\\java.txt");
        FileOutputStream out = new FileOutputStream("F:\\javaio\\java1.txt");
        
        InputStreamReader isr = new InputStreamReader(in, "gbk");
        OutputStreamWriter osw = new OutputStreamWriter(out, "gbk");
        
        int c;
//        while ((c = isr.read()) != -1) {
//            System.out.print((char)c);
//        }
        
        char[] buf = new char[8 * 1024];
        while ((c = isr.read(buf, 0, buf.length)) != -1) {
            String s = new String(buf, 0, c);
            //System.out.println(s);
            osw.write(s);
        }     
        isr.close();
        osw.close();
    }

}

   4.文件讀寫流,FileReader和FileWriter,讀取字符文件和寫入字符文件的便捷類。io

public class FileReaderAndFileWriter {
    public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("F:\\javaio\\javautf.txt");
        FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt");
        //FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt", true);//向指定文件中追加內容
        
        char[] buf = new char[1 * 1024];
        int c;
        while ((c = fr.read(buf, 0, buf.length)) != -1) {
            System.out.println(c);
            fw.write(buf, 0, c);
            fw.flush();
        }
        fr.close();
        fw.close();
    }
}

  5.字符流的過濾器字符編碼

  BufferedReader,一次讀一行

  BufferedWriter/PrintWriter,一次寫一行

public class BufRAndBufWOrPrintW {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:\\javaio\\javautf.txt")));
        //BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("F:\\javaio\\javautf2.txt")));
        PrintWriter pw = new PrintWriter("F:\\javaio\\javautf3.txt");
        
        String s;
        while ((s = br.readLine()) != null) {
            //一次讀一行,不能識別換行符
            //bw.write(s);
            //bw.newLine();//寫入一個行分隔符
            //bw.flush();
            pw.println(s);//經過寫入行分隔符字符串終止當前行
            pw.flush();
        }
        br.close();
        //bw.close();
        pw.close();
    }
}
相關文章
相關標籤/搜索