I/O流操作

流:数据传输的一种形式。
流在方向上分为输入流和输出流(读写流),在类型上分为字节流和字符流,在功能上分为节点流和过滤流
一、字节流:InputStream和OutputStream
①InputStream可完成最基本的输入流读取数据的功能,是所有字节输入流的父类。
主要子类:FileInputStream、ByteArrayInputStream、FilterInputSteam、StringBufferInputStream
读取数据的方式:read()
skip(long l)从输入流当前位置向前移动l个字节,并返回实际跳过的字节数。
close()关闭并释放与该流相关的系统资源


②OutputStream可完成最基本的输出数据的功能,是所有字节输出流的父类。
主要子类:FileOutputStream、ByteArrayOutputStream、FilterOutputStream、StringBufferOutputStream。
输出数据方法:write()
flush()刷空输出流,并输出所有被缓存的字节。
close()关闭输出流


二、字符流:Reader和Writer
①Reader:字符输入流
主要子类:BufferedReader、FilterReader、InputStreamReader
读取数据方法:read();
close()方法关闭并释放与该流相关的系统资源
②Writer:字符输出流
主要子类:BufferedWriter、FilterWriter、OutputStreamWriter
输出数据方法:writer()
flush()刷空输出流,并输出所有被缓存的字节。
close()关闭输出流


三、字节输入输出流(FileInputStream、FileOutputStream)
①使用文件名name直接创建流对象
FileInputStream f=new FileInputStream("c:/data.dat");
②使用文件对象file创建流对象
File f=new File("c:/data.dat");  FileInputStream fs=new FileInputStream(f);
③读数据:read()
④关闭数据流:close()
⑤使用指定路径和文件名创建流对象
FileOutputStream f=new FileOutputStream("c:/data.dat");
⑥使用文件对象file创建流对象
File f=new File("c:/data.dat");   FileOutputStream fs=new FileOutputStream(f);
⑦文件中写入数据:write()


四、过滤流:
字节文件流FileInputStream和FileOutputStream只能提供纯字节或字节数组的输入/输出,那要进行特殊数据的输入/输出则要使用过滤流
过滤流在输入/输出数据的同时可对数据进行处理,它提供了同步机制使得某一时刻只能有一个程序访问输入/输出流
主要过滤流的子类:
①DataIntputStream类和DataOutputStream类(读取精度更高,读取更细)
这是二进制数据文件流类,此类对象必须和一个输入类和输出类的对象联系起来,而不能用文件名或文件对象直接建立.
过程:创建字节文件流对象,在此基础上建立数据文件流对象,再次使用此对象的相应方法对基本数据类型进行输入和输出。
DataInputStream(InputStream in)创建数据过滤流对象并保存到InputStream流对象中
DataOutputStream(OutputStream out)创建输出数据文件流对象并写数据到OutputStream中
②ButteredInputStream和BufferedOutputStream
这是带缓冲的过滤流,称为字节缓冲流
BUfferedInputStream(InputStream in)  BufferedOutputStream(OutputStream out)
③PrintStream类


五、常用输入输出字符流:InputStreamReader、OutputStreamWriter、FileReader、FileWriter
其中使用BufferedReader(new FileRead(File f) )来辅助FileReader来操作文本
BufferedWriter(new FileWriter(File f))


六、序列化:
所谓序列化就是对象的持久化,就是把对象按照I/O的方式进行读写
如:
input =new ObjectInputStream();
Student stu=(Student)input.readObject();  读的过程
Student stu2=new Student();
out=new ObjectOutputStream();
out.writerObject(stu2)   写的过程
要实现序列化 要有三个条件:
①要进行序列化的类必须实现Serializable接口
②对象、引用类型属性可用时序列化也要实现Serializable接口
③要是在可被序列化中的类中的属性加上transient关键字,那么这个类不参与序列化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值