I/O流之转换流

Java I/O流体系中按照处理的数据类型可分为字符流和字节流

字节流可以转换为字符流

  • OutputStreamWriter类: 将字节输出流变为字符输出流
  • InputStreamReader类 : 将字节输入流变为字符输入流

那么,为什么要把字节流转换为字符流呢?

首先来看一下这两个转换流的继承关系和构造方法

                     InputStreamReader                               OutputStreamWriter  
继承关系 public class InputStreamReader extends Reader public class   OutputStreamWriter extends Writer
构造方法 public InputStreamReader(InputStream in) public OutputStreamWriter(OutputStream out)

字符流虽然需要缓冲区进行处理,但是字符流输出有一个特点:可以直接输出一个字符串数据,所以有些时候就需要把字节流转换为字符流

总之,转换流的存在,就是为了更好地处理中文。

同时,我们根据以上I/O流体系图可以看出,FileReder类和FileWriter类都继承于转换流,即所有字符流处理的时候是经过转换后得来的。

范例:字节流转换为字符流

public class Test {
    public static void main(String[] args) {
      File file=new File("C:"+File.separator+"Users"+File.separator+"10320"+
                File.separator+"ideaProjects"+File.separator+"file.txt");
        if(!file.getParentFile().exists()) {//判断父目录存在
            file.getParentFile().mkdirs();//创建多级父目录
        }
        try {
            OutputStream output =new FileOutputStream(file);
            Writer out=new OutputStreamWriter(output);//字节流转换为字符流
            String message="hello word";
            out.write(message);
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
发布了50 篇原创文章 · 获赞 39 · 访问量 8294

猜你喜欢

转载自blog.csdn.net/Racheil/article/details/89295846