Java学习笔记(7)–IO总结

本篇文章是我在学习JavaIO时的大体总结,不是很详细的操作教程!
使用JavaIO时操作的步骤有四步

1. 创建源/选择目的地
2. 选择合适的流
3. 进行操作
4. 关闭流

所有的IO操作几乎都是这四个步骤,万变不离齐宗,注意向文件中写入时要不断地刷新,调用flush()方法。

Java.io包内的所有类

java 开发过io流 java io流总结_java 开发过io流

下面是大部分常用类的说明和简单的使用方法。更详细的内容可以去看Java官方api

  • InputStream&OutputStream 是所有字节输入流的父类,是一个抽象类
  • FileInputStream&FileOutputStream 文件流,可以以字节流方式读取和输出文件
  • ByteArrayInputStream&ByteArrayOutputStream 字节数组流,主要用途是将非文本文件转化为字节数组,存取的源点和目的地都是内存,所以不需要关闭,GC会自动回收。输入时需要源,也就是某一个字节数组;输出不需要目的地,会直接输出到内存中,可以使用toByteArray() 或toString() 方法返回所保存的数据。toByteArray和toString是新方法,所以尽量不要在使用此类时使用多态
  • ObjectInputStream &ObjectOutputStream 可以将对象序列化(持久化)存储在文件或内存中的类和读取并还原序列化的对象,用法与DataInputStream类似,如果一个对象想要序列化,则它必须实现java.io.Serializable接口,transient可以控制一个类中的元素是否需要序列化
  • FilterInputStream&FilterOutputStream
  • BufferedInputStream& BufferedOutputStream 为字节流加缓冲,可以显著提高传输效率,这个类中没有新方法,所以不需要改变使用方法。
  • DataInputStream&DataOutputStream 数据输入/输出流允许应用程序以独立于机器的方式从底层输入流读取原始Java数据类型或从底层输出流写入原始Java数据类型,就是读出来就是某一种基本数据类型,不需要转换。有很多新方法,不要使用多态。使用时应注意顺序
  • PrintStream 打印流,可以向某一位置打印内容,可以打印到文件,也可以是控制台。System.out就是一个打印流
  • Reader&Writer 字符流,按字符读取文件,只能读取纯文本文件
  • BufferedReader&BufferedWriter 加缓冲,因为这个类里面有newLine()这个新方法,所以尽量不要使用多态
  • InputStreamReader &OutputStreamWriter 字节流转换为字符流的类:向构造方法中传入一个字节流,并可以使用指定的charset将其编码或解码 。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
  • FileReader&FileWriter 直接读取字符流的类
  • Writer
  • PrintWriter 与PrintStream 十分类似,只不过是按字符流传输的
  • RandomAccessFile 可以从文件的任意位置开始读取文件

Commons io这个组件十分重要,上文提到的所有功能都在这个jar包里被封装起来了,用起来十分方便,了解了底层原理之后就可以使用这个工具了。