IO流基础知识

1.IO流相关知识:

不同的文件需要用不同的流.

file对象对应一个文件夹或者文件。file对象在创建时,只是一个存在于内存中的对象。

I/O流用于文件读写和数据通信。从文件/其他程序中读取到内存中就是读取,用输入流;从内存中写入到文件/其他程序中就是写出,用输出流。

I/O流的分类:1.按流向分:输入,输出流。2,按数据单位不同分:字节流(单位为byte),字符流(单位为char)。字节流可用于图片,视频的读写;字符流可用于文本的读写。字节流可以copy文本文件,但是一般不会这么用。3.按流的角色分:节点流,处理流。节点流是指从文件/其他程序直接接到内存中的流,处理流是包裹在节点流上的流。//有的处理流会有助推的效果。

看到一个流,要知道是输入/输出流,字节/字符流,节点/处理流。

程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资

2.图片是一个一个字节,得用字节流处理。

3.输出流,在创建的时候new FileWriter(file,boolean),指定问价,是否追加。

4.缓冲流:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter。缓冲流是处理流的一种,套接在在已有的流之上,可以加快文件的读写速度,因为缓冲流有一个缓冲区。读取时,先读到缓冲区达到了缓存区最大值8192,之后在读取到定义的数组中,写出时,将数组中的数据写出到bos的缓冲区中,再写出到目标文件。BufferedOutputStream的flush()方法,将缓存区清空,写出去。满的时候会自动执行flush()。

5.关闭流的时候,先关闭外层流,在关闭内层流。关闭外面的时候会把里面的流关闭。

6.转换流:读取时输入流将字节按照指定的编码方式(默认为utf-8)读取为字符,写出时输出流按照指定的编码方式(默认为utf-8)写入数据。转换流处理时

7.数据流:读写各种基本数据类型的数据。

8.文件中的数据是由一个一个字节构成的,文本文件可以用字符流读取,copy的话也可以用字节流,但是字节流读取到程序中,输出,很可能会乱码。而非文本文件只能用字节流处理。

9.序列化:对象流ObjectOutputStream将内存中的对象转为二进制流放在文件里,或者传输到网络的一端。反序列化:ObjectInputStream将二进制流解析为java对象。

10.一个类可以序列化的条件:1.实现了serializable接口。2.加上了serialversionUID常量。3.其内部所有属性均可序列化(基本数据类型均可序列化)。注:static,transient修饰的属性无法序列化,反序列化读取的是null。

11.一般来说,网络中传输以json的形式,序列化一个类传输的情况比较少。

12.RandomAccessFile类,random含义是任意。特点:既可读,又可写(但是读写得建两个对象)。写文件时,如果文件不存在,会创建一个文件,如果文件存在,会从文件头开始覆盖。

13.ByteArrayOutputStream:初始化时不用指定文件,其内部有个数组,在写出时直接写到内部的数组中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值