io流-续

  1. 对象流

(1) 为什么需要序列化?

答:序列化以后的对象可以保存到磁盘上,也可以在网络上传输,是的不同的计算机可以共享对象(序列化的字节序列是平台无关的)。

(2) 对象的序列化有哪些条件?

答:只有了实现了Serializable接口的类的对象才可以被序列化,Serializable接口中没有任何的方法,实现该接口的类不需要实现额外的方法。对过对象的属性是对象,属性对应类也必须实现Serializable接口。。
2. 序列化和反列序列化

(1) 简述序列化与反序列化的内容?

答:1)序列化能保存

2)使用对象流把一个对象写道文件时不仅保证该对象是序列化的,而且该对象的成员对象也必须是可序列化的。

3)如果一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableExceprion异常。我们将这个引用标记为tansient,那么对象依旧可以序列化

(2) 对象序列化的注意事项有哪些?

答:同一个对象多次序列化处理

1) 所有保存到磁盘中的对象都有一个序列化编号

2) 序列化一个对象中,首先检查该对象是否已经序列化过

3) 如果没有,进行序列化

4) 如果已经序列化,将不再重新序列化,二十输出编号

如果不希望某些属性序列化,或不惜黄出现递归序列

1) 为属性添加tansient关键字(完成排序在序列化之外)

2) 自定义序列化(不仅可以决定那些书信不参加序列化,还可以定义属性具体如何序列化)

序列化版本不兼容

1) 修改了实例属性后,会影响版本号,从而导致反序列化不成功

2) 为Java对象指定序列化版本号serialVersionUID
3. 文件夹的复制

(1) 文件夹的复制会使用到哪些流?

答:字节流:BufferedInputStream/BufferedOutputStream

FileInputStream/FileOutputStream:数据源与目的地都为文件,且文件格式不是纯文本,所有选用字节流

(2) 简述文件夹复制的过程?

1首先判断目标文件夹是存在,若不存在则创建文件夹

2获取该目录下的所有文件

3在循环遍历文件时,判断这是不是一个文件,若为文件则将此文件复制到目标文件所对应的目录下(注意拼接时文件名应相同),若不是 ,则递归调用自己。
4. 字节数组流

(1) 字节数组流的作用?

答:提高空间利用率

压缩内容,在网络传输时,能有效压缩传输数据的大小,从而提高效率
5. 设计模式_装饰器模式

(1) 什么是装饰设计模式?举例描述

答:装饰模式是一种用于替代继承的技术,无序通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。

(2) 装饰模式的实现细节及优缺点?

答:优点:1)扩展对象功能,比继承灵活。不会导致类个数急速增加

2)具体构建类和具体装饰类可以独立变化,用户可以根据需要自己增加新的具体构建子类和具体修饰子类

3) 可以对一个对象进行多次装饰,创建出不同行为的组合,得到功能更加大的对象

缺点:1)产生很多小对象,大量小对象占据内存,一定程序上影响性能

2)修饰模式容易出错,调式排查比较麻烦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值