Java中字符流之輸入,輸出流以及轉(zhuǎn)換流

Java中字符流之輸入,輸出流以及轉(zhuǎn)換流

長沙一度軟件培訓(xùn)      2022-04-22 12:07:01     10

Java中字符流之輸入,輸出流以及轉(zhuǎn)換流,字符流一個字符一個字符的讀mac系統(tǒng)下,一個中文字符占3個字節(jié)默認(rèn)使用UTF-8的編碼表(通用的編碼表)Windows系統(tǒng)下,一個中文字符占

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹

字符流

一個字符一個字符的讀

mac系統(tǒng)下,一個中文字符占3個字節(jié)默認(rèn)使用UTF-8的編碼表(通用的編碼表)

Windows系統(tǒng)下,一個中文字符占2個字節(jié)默認(rèn)使用的GBK的編碼表(簡體中文)

注意:只能操作文本(不能寫圖片、音頻、視頻)

字符輸出流

Writer(所有字符輸出流的父類?抽象類)????FileWriter????構(gòu)造方法(綁定寫入的路徑):????????????????文件????????????????字符串????注意:字符輸出流在寫入文件的時候需要調(diào)用刷新方法代碼實例:????????FileWriter?fWriter?=?new?FileWriter("/Users/lanou/Desktop/level/haha.txt");????????fWriter.write(100);????????//?每次寫入?最好都刷新一次????????fWriter.flush();????????//?字符數(shù)組寫入????????char[]?c?=?{'l','o','n','g'};????????fWriter.write(c);????????fWriter.flush();????????fWriter.write(c,?1,?3);????????fWriter.flush();????????//?使用字符串直接寫入????????fWriter.write("寫一句古詩n");????????fWriter.flush();????????fWriter.write("寫一句古詩n呃呃呃n");????????fWriter.flush();????????fWriter.write("白日依山盡",?0,?2);????????//?關(guān)閉資源前?會刷新????????fWriter.close();

字符輸入流

Reader(所有字符輸入流的父類 抽象類)

讀的時候不能直接讀取字符串,因為字符串很難界定到哪結(jié)束,不太容易判斷一個字符串

循環(huán)讀取:

  FileReader fr = new FileReader("/Users/lanou/Desktop/level/haha.txt");        int num = 0;        while ((num = fr.read()) != -1) {            System.out.println((char)num);        }        char[] c = new char[1024];        while ((num = fr.read(c)) != -1) {            System.out.println(new String(c, 0, num));        }        fr.close();

利用字符流復(fù)制文件

 public class Demo {            public static void main(String[] args) {                File file1 = new File("/Users/lanou/Desktop/level/9.jpg");                File file2 = new File("/Users/lanou/Desktop/XTest/9.jpg");                name(file1, file2);            }            public static void name(File file1,File file2) {                FileReader fr = null;                FileWriter fw = null;                try {                    fr = new FileReader(file1);                    fw = new FileWriter(file2);                    int len = 0;                    char[] c = new char[1024];                    while ((len = fr.read(c)) != -1) {                        fw.write(c, 0, len);                    }                } catch (FileNotFoundException e) {                    throw new RuntimeException("找不到文件");                } catch (IOException e) {                    throw new RuntimeException("文件復(fù)制失敗");                } finally {                    try {                        if (fr != null) {                            fr.close();                        }                    } catch (IOException e) {                        throw new RuntimeException("關(guān)閉資源失敗");                    } finally {                        try {                            if (fw != null) {                                fw.close();                            }                        } catch (IOException e) {                            throw new RuntimeException("關(guān)閉資源失敗");                        }                    }                }            }        }

轉(zhuǎn)換流

OutputStreamWriter(字符流轉(zhuǎn)向字節(jié)流)

作用:可以使用不同編碼格式寫入

需要使用FileOutPutStream類

InputStreamReader(字節(jié)流轉(zhuǎn)向字符流)

作用:可以讀取不同編碼格式的文件

需要使用FileInputStream類

public class Demo {    public static void main(String[] args) throws IOException {        getUTF8();        getGBK();        readerGBK();        readUTF8();    }    // 利用轉(zhuǎn)換流寫文件 OutputStreamWriter 默認(rèn)uft8寫    public static void getUTF8() throws IOException {        FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/level/utf8.txt");        // 創(chuàng)建轉(zhuǎn)換流 字符流轉(zhuǎn)向字節(jié)流        OutputStreamWriter osw = new OutputStreamWriter(fos);        // 寫文件        osw.write("SC");        // 只關(guān)閉外層的流        osw.close();    }    // 使用GBK的編碼寫入文件 利用轉(zhuǎn)換流    public static void getGBK() throws IOException{        FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/level/gbk.txt");        // 構(gòu)建轉(zhuǎn)換流 傳入編碼格式(編碼格式的字符串 忽略大小寫)        OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");        osw.write("SC");        osw.close();    }    // 使用GBK的編碼讀取文件 利用轉(zhuǎn)換流    public static void readerGBK() throws IOException {        FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/level/gbk.txt");        InputStreamReader isr = new InputStreamReader(fis, "GBK");        int len = 0;        char[] c = new char[1024];        while ((len = isr.read(c)) != -1) {            System.out.println(new String(c, 0, len));        }        isr.close();    }    // 使用uft8的編碼讀取文件 利用轉(zhuǎn)換流    public static void readUTF8() throws IOException {        FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/level/utf8.txt");        InputStreamReader isr = new InputStreamReader(fis);        int len = 0;        char[] c = new char[1024];        while ((len = isr.read(c)) != -1) {            System.out.println(new String(c, 0, len));        }        isr.close();    }}

以上就是長沙一度軟件培訓(xùn)java培訓(xùn)機構(gòu)的小編針對“Java中字符流之輸入,輸出流以及轉(zhuǎn)換流”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。