Java I/O 用法总结

Java IO 中涉及的类确实太多,刚开始看的时候一头雾水,用的多了,慢慢也就清晰了。

IO 中常用的类如下:
字节流基类:InputStream,OutputStream
字符流基类:Reader,Writer
文件字节流:FileInputStream,FileOutputStream
文件字符流:FileReader,FileWriter
字节缓冲流:BufferedInputStream,BufferedOutputStream
字符缓冲流:BufferedReader,BufferedWriter
字节转换成字符的转换流:InputStreamReader,OutPutStreamWriter
字节输出流:PrintInputStream
字符输出流:PrintWriter,
带Print 的输出流可以格式化输出内容,例如格式化成String,或者%d这种样式,用法比较灵活

Java IO 框架使用的是装饰者模式,类与类之间的关系不是单纯的继承,
一个类可以辅助另一个类,更完善的实现功能,比如下面的实例化BufferedReader对象:

BufferedReder reader = new BufferedReader(new InputStreamReader(new FileInputStream(file, "UTF-8")));

  最终实现的是使用缓存流读入UTF-8编码格式的文件中内容。一层一层进行包装,比如FileInputStream是与文件关联的字节流,但是文本中文件使 用字符流读比较好,于是 InputStreamReader 把与文件关联的字节流作为自己的输入,包装成了字符流,但是又想使用效率比较高的 BufferedReader来读取文件的内容,于是在InuputStreamReader 的基 础上又包装了一层,最终的代码就成了上面那种写法。

  IO流有四个几类,这四个基类是对应关系,是抽象类,不能直接使用,实际应用中要使用它们的派生类,这四个基类分别是:
  InputStream/OutputStream:处理输入/输出的字节流:
  Reader/Writer: 处理输入/输出的字符流。
输入和输出是一个相对的概念,这里程序读数据是InputStream,向文件或者内存中输出/写入 数据是OutputStream

具体使用中需要和文件关联的又分为文件字节流和文件字符流:
FileInputStream 和 FileOutputStream,处理文件字节流
FileReader 和 FileWriter,处理文件字符流

缓冲流:
BufferedInputStream/BufferedOutStream,
BuffereredReader/BufferedWriter。
使用缓冲流注意使用flush方法,把数据从内存中刷出。

字节转换成字符的转换流:
InputStreamReader/OutputStreamWriter
字符比字节处理起来要 方便些,所以只提供了字节到字符的转换流,并没有提供字符向字节的转换流。 这种应用的情况比如需要设置读取文件的编码格式,FileInputStream 和 FileOutputStream 可以设置编码格式,但是字节处理起来比较麻烦,可以转 换成字符处理 InputStreamReader(new FileInputStream(file, charset))。

还有经常使用的字节输出流和字符输出流:
PrintStream,PrintWriter,
BufferedWriter和PrintWriter都可以写入数据,但 BufferedWriter没有相关的格式化的方法,而PrintWriter可以在写入同时 对写入的数据进行格式化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值