萌新学Java之初入门径九----缓冲流

转换流

OutputStreamWriter(字符流转向字节流的桥梁)

  • 1.将程序中的字符 按照 创建转换流时给出的编码格式 去查对应的码表(GBK就去查GBK格式的码表)
  • 2.将查到的两个或三个字节 交给创建转换流时 传入的字节流
  • 3.最终时 使用字节流 将文件写入

InputStreamReader(字节流转向字符流的桥梁)

  • 1.先按字节读 读完用转换流去查询对应的编码表
  • 2.最终以字符的形式读取到程序中

    编码格式

  • mac 默认 UTF-8 一个中文3个字节
  • win 默认 GBK 一个中文2个字节

1.读GBK

FileInputStream fis = new FileInputStream(“/Users/lanou/Desktop/Test/wl123.txt”);

    InputStreamReader isr = new InputStreamReader(fis,"GBK");

    char[] b = new char[1024];
    int len = 0;
    while ((len = isr.read(b)) != -1) {
        System.out.println(new String(b,0,len));
    }

    isr.close();

2.//转换流写个GBK格式的文件

//文件字节流
FileOutputStream fos = new FileOutputStream(“/Users/lanou/Desktop/Test/wl123.txt”);
//编码格式 大小写都行
OutputStreamWriter osw = new OutputStreamWriter(fos, “GBK”);
//写入
osw.write(“世间安得双全法,不负如来不负卿!”);
osw.close();

缓冲流(高效流)

  • 缓冲字节流
  • BufferedOutputStream
  • 默认缓冲区大小: 8k
  • 内部自带一个缓冲数组

1.//创建一个缓冲流

  FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/Test/缓冲流.txt");
    BufferedOutputStream bos = new BufferedOutputStream(fos);


    //写入
    bos.write("123".getBytes());

    bos.close();

2.//缓冲流读取

FileInputStream fis = new FileInputStream(“/Users/lanou/Desktop/Test/缓冲流.txt”);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] b = new byte[1024];
int len = 0;
while ((len = bis.read(b)) != -1) {
System.out.println(new String(b, 0, len));
}
bis.close();

流 总结:

  • 字节流
  • 字符流
  • 转换流
  • 高效流

明确操作的文件是源文件还是目标文件?

  • 源文件 读文件 输入流 InputStream Reader
  • 目标文件 写文件 输出流 OutputStream Writer

Properties集合(双列集合 是Hashtable的子类)

  • 该集合 是唯一一个能和IO流有关系的集合
  • 注意:一般该集合之存储 字符串类型的键值对
  • load:将文件直接读入到集合中
  • store:将集合中的键值对直接写入到文件中

读取文件的格式

  • key=value
  • 注意:
  • 1.等号前后不能加空格
  • 2.一般该文件使用.properties后缀(起标识作用)
  • 3.#号为注释

序列化流(反序列化流 对象流)

  • 将对象直接写入到文件中
  • ObjectOutputStream
  • ObjectInputStream

阻止成员变量序列化

  • 1.static 修饰成员变量
  • 2.使用关键字 transient(瞬态) 标识成员变量

解决序列化ID冲突的方案

将序列化号写死
只要类中存在序列化号 系统将不会重新生成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值