java高级day05

目录

常用IO流

对象流

序列化和反序列化:

介绍:

Serializable接口

介绍:

transient关键字

介绍:

对象输入流

对象输出流

缓冲字节流

介绍:

缓冲字节输入流

缓冲字节输出流

flush方法

缓冲字节流文件复制

字符流

介绍

FileReader

FileWriter

缓冲字符流

文件复制

lambda表达式

介绍

函数式接口

介绍:

省略规则

JDK8函数引用

静态方法的引用

非静态方法的引用

构造方法引用

Q&A


常用IO流

对象流

对象流和管道流

对象流没有结尾的标志,会抛出EOF异常

序列化和反序列化:
介绍:
  • 当需要将对象传输到另一台计算机上等操作时,需要将对象转换为一个字节序列,而这个过程就称为对象序列化,相反,将一个字节序列转换为对应的对象,这个过程就称为对象的反序列化。

  • 对象---对象序列化--->字节序列 字节序列---反序列化--->对象

Serializable接口
介绍:
  • ObjectOutputStream在对对象进行序列化时有一个要求,就是需要序列化的对象所属的类必须实现Serializable接口。

  • 实现该接口不需要重写任何方法。其只是作为可序列化的标志。

  • 通常实现该接口的类需要提供一个常量serialVersionUID,表明该类的版本。

  • 若不显示的声明,在对象序列化时也会根据当前类的各个方面计算该类的默认serialVersionUID,但不同平台编译器实现有所不同,所以若向跨平台,都应显示的声明版本号。

public class Student implements Serializable {}
transient关键字
介绍:

被transient关键字修饰的属性在序列化时其值将被忽略

private Integer id;
private String name;
private transient Integer age;
对象输入流
  • ObjectInputStream:— Object readObject(),对象反序列化

  • 从流中读取字节并转换为对应的对象。

ObjectInputStream objectInputStream= new ObjectInputStream(new FileInputStream("D:\\file\\obj.txt"));
Student student=(Student) objectInputStream.readObject();//将对象字节序列转成对象==>反序列化
System.out.println(student);
对象输出流
  • ObjectOutputStream:— void writeObject(Object o),对象序列化

  • 将给定的对象转换为一个字节序列后写出。

ObjectOutputStream outputStream= new ObjectOutputStream(new FileOutputStream("D:\\file\\obj.txt"));
outputStream.writeObject(student);//将对象转成字节序列==>序列化

缓冲字节流
介绍:
  • Java的字节缓冲流是对字节流一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。

  • 缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或者当缓冲区为空时一次性从文件或输入流中读取一定量的数据。这样可以减少系统的 I/O 操作次数,提高系统的 I/O 效率,从而提高程序的运行效率

缓冲字节输入流
  • BufferedInputStream,内部维护着一个缓冲区(字节数组),该流读取文件会尽可能多的一次性读取若干字节并存入缓冲区,然后逐一的将字节返回,直到缓冲区数据读完,再次读取若干字节从而反复,减少读取次数,提高读取效率

构造方法 说明
BufferedInputStream(InputStream in) 将字节输入流转成缓冲字节输入流
BufferedInputStream(InputStream in,int size) 将字节输入流转成缓冲字节输入流,并指定缓冲区大小
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\file\\a.jpg"),1024);//字节流转成缓存字节流
int d=-1;
while((d=bis.read())!=-1){}
缓冲字节输出流
  • BufferedOutputStream,写数据时先将数据存入缓冲区,缓冲区满将数据一次性全部写出。

  • 一次性批量写出若干数据减少写出次数来提高写出效率

构造方法 说明
BufferedOutputStream(OutputStream out) 将字节输出流转成缓冲字节输出流
BufferedOutputStream(OutputStream out,
  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值