关于IO流—复习

首先
有两个大类别,字符流和字节流

字节流

FileOutputStream

以字节为单位进行存储读出。
FileOutputStream中的write方法,就是把十进制整数转化为二进制,因为计算机的底层是二进制传递的,输出到硬盘的文本中,而在你打开文本之后,文本编辑器对该二进制代码进行解码,根据二进制转化的数字大小来查表,转化为字母或数字,汉字等。
例如

FileOutputStream x=new FileOutputStream("D:\\a.txt");
            x.write(97);
            x.close();

在文本中的结果为 a
转化过程如图所示:
在这里插入图片描述

FileInputStream

其中的read()方法就是在文件中读取一个字节,如果遇到汉字的情况(由于汉字一般占多个字节,就会出现一次读取一点的情况)
在文件中所有数据都是由二进制存储的,遇到汉字时读取一个字节,下一个字节则在下一次读取。
读取完字节以后传回内存,转化为十进制表示。

字符流

读和写都是一个字符,
重点是FileWriter
writer(int)方法,他把十进制数转化为字符再把字符写入缓冲区,然后转化为字节,后面跟字节流一样了。
所以要求调用flush方法。

缓冲流

转化流

注:字符流中会调用字节流,如图所示
在这里插入图片描述
在由FileReader读取数据时,其实也是通过调用了FileInputStream,来把文件中的字符转化为字节,从而自己由默认的编码表解码,把字节转化为字符。
FIleReader存在限制,只能使用默认的,而他的父类,InputStreamReader可以采用任意的编码表解码,来进行转换
写入数据时则同理
单独使用FileInputStream时没有解码过程

public class TestMain {
    public static void main(String[] args) throws IOException {
        FileOutputStream x=new FileOutputStream("D:\\a.txt");
        x.write(65);
        FileInputStream y=new FileInputStream("D:\\a.txt");
        System.out.println(y.read());

    }
}

最后两个流相当于是对类的一个包装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值