常用IO流分类 使用场景 注意事项等

描述下JavaSE中的常用IO流、对IO流操作过程中的注意事项、说明常用IO流的使用场景

个人理解:
几乎所有的程序都离不开信息的输入和输出,比如从键盘读取数据,从文件中获取或者向文件中存入数据,在显示器上显示数据。这些情况下都会涉及有关输入/输出的处理。
在Java中,把这些不同类型的输入、输出源抽象为流(Stream),其中输入或输出的数据称为数据流(Data Stream),用统一的接口来表示。而数据流是指一组有顺序的、有起点和终点的字节集合.
IO流就是用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中.IO流按不同规则可以分为以下几种情况:
1.IO流按照流的方向可以分为2类,分别为:
输入流 :将外部的某些数据读取到内存中来的流, 比如读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。InputStream Reader
输出流 :将程序内存中的数据写出到数据目的地的流, 比如把程序(内存)中的内容输出到磁盘、光盘等存储设备中。 OutpuStream Writer
2.按照处理的最小单位也可以分为2类,分别为:
字节流:每次读取(写出)一个字节,当传输的资源文件有中文时,就会出现乱码。
InpuStream OutputSteam
字符流:每次读取(写出)两个字节,有中文时,使用该流就可以正确传输显示中文。
Reader Writer
字符流只能处理文本数据,在处理文本数据上比较方便。字符流本质上也是字节流,是一种带封装的字节流,是一种具有将字节数据转换为字符数据功能的流。
字节流所有的数据都能处理,但是处理文本数据不如字符流方便。字节流的功能更加强大。
3.根据处理的数据源不同分类,也可以分为2类,分别为:
节点流:直接和数据源相连, 从或向一个特定的地方(节点)读写数据的流。FileInputStream、FileOutputStream、FileReader、FileWriter
处理流:也叫包装流,是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。BufferedInputStream、BufferedOutputStream,BufferedReader、BufferedWriter

使用IO流的注意事项:
许多IO操作都可能会抛出IOException异常,比如read、write、close操作。IO流使用完应按顺序及时关闭不使用的流,不然可能造成资源流失,导致内存溢出. 在使用IO流时,首先自己要知道是选择输入流还是输出流。这就要根据自己的情况决定,如果想从程序写东西到别的地方,那么就选择输入流,反之就选输出流;然后考虑你传输数据时,是每次传一个字节还是两个字节,每次传输一个字节就选字节流,如果存在中文,那肯定就要选字符流了。通过前面两步就可以选出一个合适的节点流了,比如字节输入流 InputStream,如果要在此基础上增强功能,那么就在处理流中选择一个合适的即可。
在工作中的运用场景:
在使用shiro框架时,官方提供的shiro-ehcache技术中,在注入EhCacheManager对象读取xml时使用到了InputStream流.
在使用分布式文件存储服务FastDFS上传下载文件时,使用到了IO流.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值