缓冲流、转换流、序列化对象、打印流、commons-io概述

缓冲流

缓冲流也称为高效流、或者高级流。之前学习的字节流可以称为原始流。

作用:缓冲流自带缓冲区、可以提高原始字节流、字符流读写数据的性能。

字节缓冲流性能优化原理:

字节缓冲输入流自带了8KB缓冲池,以后我们直接从缓冲池读取数据,所以性能较好。

字节缓冲输出流自带了8KB缓冲池,数据就直接写入到缓冲池中去,写数据性能极高了。 

推荐使用哪种方式提高字节流读写数据的性能?

建议使用字节缓冲输入流、字节缓冲输出流,结合字节数组的方式,目前来看是性能最优的组合。

 字符输入转换流  

字符输入转换流:InputStreamReader,可以把原始的字节流按照指定编码转换成字符输入流

构造器

说明

public InputStreamReader(InputStream is)

可以把原始的字节流按照代码默认编码转换成字符输入流。几乎不用,与默认的FileReader一样。

public InputStreamReader(InputStream is ,String charset)

可以把原始的字节流按照指定编码转换成字符输入流,这样字符流中的字符就不乱码了(重点)

字符输入转换流InputStreamReader作用:

可以解决字符流读取不同编码乱码的问题 public InputStreamReader(InputStream is,String charset):     可以指定编码把原始字节流转换成字符流,如此字符流中的字符不乱码。

字符输出转换流OutputStreamWriter的作用?

public OutputStreamWriter(OutputStream os,String charset) 可以指定编码把字节输出流转换成字符输出流,从而可以指定写出去的字符编码! 

对象序列化:

作用:以内存为基准,把内存中的对象存储到磁盘文件中去,称为对象序列化。

使用到的流是对象字节输出流:ObjectOutputStream

对象序列化的含义是什么? 把对象数据存入到文件中去。

对象序列化用到了哪个流?

对象字节输出流ObjectOutputStram public void writeObject(Object obj)

序列化对象的要求是怎么样的? 对象必须实现序列化接口

对象反序列化:

使用到的流是对象字节输入流:ObjectInputStream

作用:以内存为基准,把存储到磁盘文件中去的对象数据恢复成内存中的对象,称为对象反序列化。

对象反序列化的含义是什么? 把磁盘中的对象数据恢复到内存的Java对象中。

对象反序列化用到了哪个流? 对象字节输入流ObjectInputStram public Object readObject()

打印流 作用:打印流可以实现方便、高效的打印数据到文件中去。

打印流一般是指:PrintStream,PrintWriter两个类。 可以实现打印什么数据就是什么数据,例如打印整数97写出去就是97,打印boolean的true,写出去就是true。

构造器

说明

public PrintStream(OutputStream os)

打印流直接通向字节输出流管道

public PrintStream(File  f)

打印流直接通向文件对象

public PrintStream(String filepath)

打印流直接通向文件路径

PrintStream和PrintWriter的区别

打印数据功能上是一模一样的,都是使用方便,性能高效(核心优势) PrintStream继承自字节输出流OutputStream,支持写字节数据的方法。

PrintWriter继承自字符输出流Writer,支持写字符数据出去。

打印流有几种?各有什么特点? 打印流一般是指:PrintStream,PrintWriter两个类。

打印功能2者是一样的使用方式 PrintStream继承自字节输出流OutputStream,支持写字节 PrintWrite继承自字符输出流Writer,支持写字符。

打印流的优势是什么? 两者在打印功能上都是使用方便,性能高效(核心优势)

Properties属性集对象

其实就是一个Map集合,但是我们一般不会当集合使用,因为HashMap更好用。

Properties代表的是一个属性文件,可以把自己对象中的键值对信息存入到一个属性文件中去。

属性文件:后缀是.properties结尾的文件,里面的内容都是 key=value,后续做系统配置信息的。

构造器

说明

void load​(InputStream inStream)

从输入字节流读取属性列表(键和元素对)

void load​(Reader reader)

从输入字符流读取属性列表(键和元素对)

void store​(OutputStream out, String comments)

将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法的格式写入输出字节流

void store​(Writer writer, String comments)

将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式写入输出字符流

public Object setProperty(String key, String value) 

保存键值对(put)

public String getProperty(String key) 

使用此属性列表中指定的键搜索属性值 (get)

public Set<String> stringPropertyNames()

所有键的名称的集合  (keySet())

Properties的作用?

可以存储Properties属性集的键值对数据到属性文件中去:

void store​(Writer writer, String comments)

可以加载属性文件中的数据到Properties对象中来: void load​(Reader reader) 

commons-io概述

commons-io是apache开源基金组织提供的一组有关IO操作的类库,可以提高IO功能开发的效率。 commons-io工具包提供了很多有关io操作的类。有两个主要的类FileUtils, IOUtils

方法名

说明

String readFileToString(File file, String encoding)

读取文件中的数据, 返回字符串

void copyFile(File srcFile, File destFile)

复制文件。

void copyDirectoryToDirectory(File srcDir, File destDir)

复制文件夹。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值