IO流的分类及相关的常用点

流:一连串流动的数据,管道
数据源 — 目的地
以程序为中心
流的分类
流向
输入流
输出流
操作单元
字节流:(万能流)
字节输入流
InputStream 流向:输入流 操作单元:字节流 功能:节点流
此抽象类是表示字节输入流的所有类的超类。 不能实例化
public class FileInputStream
extends InputStream
从文件系统中的某个文件中获得输入字节
read() 每次从输入流中读入一个字节的内容,想要读入多个 手动一个字节一个字节读入
int read(byte[] b) 一个字节数组一个字节数组读入
字节输出流
OutputStream 此抽象类是表示输出字节流的所有类的超类
目的地的文件不存在系统会自动创建指定文件,文件夹不会自动创建
FileOutputStream 文件输出流是用于将数据写入 File的输出流
字符流:只能操作纯文本的内容 .txt .html
Reader 字符输入流 抽象类 FileReader 输入流
read()| read(char[]) + close()
Writer 字符输出流 抽象类 FileWriter 输出流
FileWriter write() | write(char[]) | append() +flush() + close()
字符流实现文件拷贝:
1.文件–>程序 输入
2.程序–>文件 写出

文件拷贝
数据源 --程序-- 目的地

  • //1.选择流
    输入流 InputStream is=new FileInputStream(“D:/test.txt”);
    输出流 OutputStream os=new FileOutputStream(“E:/test.txt”);
    //2.准备卡车
    byte[] car=new byte[1024];
    //3.读入写出
    int len=-1; //读入到小卡车中数据的个数
    while((len=is.read(car))!=-1){
    os.write(car,0,len);
    }
    //4.刷出
    os.flush();
    //5.关闭 先打开的后关闭
    os.close();
    is.close();
    功能
    节点刘:直接从数据源到目的地.
    功能流:经过包装.

缓冲流
增强功能,提高性能
使用:功能流(节点流)
字节缓冲流:
字节输入缓冲流 BufferedInputStream
字节输出缓冲流 BufferedOutputStream
无新增方法,可以发生多态
字符缓冲流
BufferedReader 新增方法 readLine() 读取一行
BufferedWriter 新增方法 newLine() 写出换行符
不能发生多态,因为父类引用对子类新增方法不可见
转换流(了解)
可以把字节流转为字符流使用
InputStreamReader(InputStream,String charset)
OutputSteamWriter(OutputSteam,String charset)
可能出现乱码的情况:
1.字符编码格式不统一
2.缺少字节个数
不同编码格式汉字所占字节大小:
ISO-8859-1 1个字节 GBK 2个字节
GB2312 2个字节 UTF-8 3个字节

基本数据类型流
读写带有基本数据类型的数据+String
基本数据类型流(字节节点流)
DataInputStream(InputStream): 新增方法: readXXX()
DataOutputStream(OutputStream): 新增方法: writeXXX()
EOFException:文件存在,但是内部无法读取,不是源文件
序列化:将对象信息转为可存储或者可传输的信息格式
对象流
序列化输出流 ObjectOutputStream
反序列化输入流 ObjectInputStream
新增方法 readXxx() writeXxx()

先序列化后反序列化
不是所有的类都能序列化 实现一个空接口 java.io.Serializable
不是所有的属性都需要序列化 transient
静态的内容不能被序列化 默认值
如果父类实现了Serializable,子类中所有的内容都可以序列化
如果子类实现Serializable,父类中的内容没有序列化能力,只有子类的内容有

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值