字節流轉字符流OutputStreamWriter、InputStreamReader,關閉流的方法


轉換時可以指定編碼格式:GBK、UTF-8

public class Demo {
    public static void main(String[] args) {
        File f = new File("word.txt");
        FileOutputStream out = null;//字節流
        OutputStreamWriter osw = null;//字節流轉字符流
        BufferedWriter bw = null;//緩沖字符流
        try {
            out = new FileOutputStream(f);
            osw = new OutputStreamWriter(out, "GBK");//字節流轉字符流,編碼格式GBK
            bw = new BufferedWriter(osw);
            bw.write("夕西行");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {//注意關閉順序,由后至前
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (osw != null) {
                try {
                    osw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        FileInputStream in = null;//字節流
        InputStreamReader isr = null;//字節流轉字符流
        BufferedReader br = null;//緩沖字符流
        try {
            in = new FileInputStream(f);
            isr = new InputStreamReader(in, "GBK");
            br = new BufferedReader(isr);
            System.out.println(br.readLine());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 關閉流的另外一種方法(推薦)。在try的()中寫入代碼,try-catch結束,流自動關閉

public class Demo {
    public static void main(String[] args) {
        File f = new File("word.txt");
        //在try的()中寫入代碼,try-catch結束,流自動關閉
        try (FileOutputStream out = new FileOutputStream(f);
             OutputStreamWriter osw = new OutputStreamWriter(out, "GBK");
             BufferedWriter bw = new BufferedWriter(osw);) {
            bw.write("夕西行");
        } catch (IOException e) {
            e.printStackTrace();
        }
        FileInputStream in = null;//字節流
        InputStreamReader isr = null;//字節流轉字符流
        BufferedReader br = null;//緩沖字符流
        try {
            in = new FileInputStream(f);
            isr = new InputStreamReader(in, "GBK");
            br = new BufferedReader(isr);
            System.out.println(br.readLine());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM