关于java流的见解

l  流

主要目的是:数据进行磁盘和内存的互换

流相关的API都在java.io包里面

 

流按照方向分有两种:

输入流输出流,是以内存作为参照物

输入(读取)流:从数据源中,将数据读取到内存中

输出(写入)流:将内存中的数据写入到数据源

 

 

流按照传输的内容分三种

字节流,字符流,对象流   

无论是哪一种流,底层部分都是以字节方式传输的。所以,其本质都是字节流,但是为了方便程序员更好的操作字符数据和对象数据,在字节流基础上做了一层包装,形成了字符流和对象流。

 

l  API层次

字节流   的抽象父类是  InputStream和OutputStream  

字符流   的抽象父类是  Reader和Writer

对象流    

 

l 流操作的步骤

1,  建立流

2, 操作流

3, 关闭流

需要知道的小常识:

操作文件流时,如果文件不存在,那么,读取流会抛出文件未找到异常,而写入流会创建文件

关闭流的操作顺序。先读写流后写入流的话就先关写入流再关读写流。

 

 

l  字节写入和字符写入覆盖问题

FileOutputStrea(地址,true) 后面加true就代表拼接,不加就直接覆盖

FileWriter(地址,true)

 

 

 

l  流操作完成以后必须完成关闭,否则不仅浪费内存资源,而且写入流有可能写不进数据。

 

 

对象流

当需要对对象进行传输时,由于对象中的数据很庞大,无法直接传输。那么在传输之前,需要将对象打散成二进制的序列,以便传输。这个过程称为序列化过程

到达目的之后,又需要将二进制序列还原成对象,这个过程称为反序列化过程

 

对象要必须实现java.io.Serializable接口才能进行序列化

 

l  异常:java.io.NotSerializableException 

当需要传输对象时,而该对象所在的类没有实现(Serializable)序列化接口时抛出

 

transient关键字

给对象的属性做修饰的,表示在传输对象时,被transient修饰的属性值不做传输


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值