字节流转字符流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();
                }
            }
        }
    }
}
原文地址:https://www.cnblogs.com/xixixing/p/9526840.html