( 字节流与字符流 )转换流

转换流

转换流指的是可以实现字节流与字符流操作的功能转换,例如进行输出的时候OutputStream需要将内容变为字节数组后可以输出,而Writer可以直接输出字符串,所以很多人认为需要一种转换的机制来实现不同流类型的转换操作,为此java.io包中提供有两个类:

  • InouterSteamReader
//定义
public class InputStreamReader extends Reader
//构造方法
public InputStreamReader​(InputStream in)
  • OutputStreamWriter
//定义
public class OutputStreamWriter extends Writer
//构造方法
public OutputStreamWriter​(OutputStream out)

传入字节流对象,利用向上转型转换位字符流对象。

范例:观察转换

public class Writer字符流输出 {
    public static void main(String[] args) throws IOException {
        File file = new File("F:"+File.separator+"Test"+File.separator+"test.txt");
        if(file.getParentFile().exists()){  //没有父路径
            file.getParentFile().mkdirs();  //创建一个父路径
        }
        OutputStream outputStream = new FileOutputStream(file);
        Writer writer = new OutputStreamWriter(outputStream);   //字节流变为了字符流
        writer.write("www.baidu.com");  //直接输出一个字符串,不需要转换为字节数组
        writer.close();
    }
}

OutputStream类有FileOutputStream直接子类、InputStream有FileInputstream直接子类,但是来观察一下FileWriter与FileReader类的继承关系:

//FileWrite
public class FileWriter extends OutputStreamWriter
//FileReader
public class FileReader extends InputStreamReader

FileReader继承结构

字符流与字节流的区别在于字符流多了缓冲区,缓冲区实际上指的是程序中间的一道处理缓冲区。

猜你喜欢

转载自blog.csdn.net/weixin_46245201/article/details/112793908