Java基础回顾 —I/O

  1. Java io中最重要的就是5个类和1个接口:
    5个类:File、OutputStream、InputStream、Writer、Reader
    1个接口:Serializable
  2. File类是针对文件本身的操作,如果要对文件内容进行操作,需要使用RandonAccessFile类,此类属于随机读取类
  3. 字节流主要操作byte数据类型,以byte数组为准,主要是InputStream 和 OutputStream类。
  4. 一个字符等于两个字节,字符流主要有Reader和Writer两个操作类。
  5. 字节流比字符流会更好一些:因为所有文件在硬盘或在传输的时候都是通过字节的方式进行的,包括图片等都是按照字节的形式存储的,而字符只有在内存中才会形成,所有开发中字节流会用的更广泛一些。
  6. 转换流是字节流与字符流的转换类。OutputStreamWriter是Writer的子类,将输出的字符流变为字节流。InputStreamReader是Reader的子类,将输入的字节流变为字符流。
  7. 内存操作流:
    ByteArrayOutputStream -- 此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。
    ByteArrayInputStream -- 包含一个内部缓冲区,该缓冲区包含从流中读取的字节且支持 mark 和 reset 方法的能力。
    一般在生成临时信息时才会使用,且关闭没有作用
  8. 管道流主要是可以进行两个线程之间的通信:
    PipeOutputStream -- 可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。通常,数据由某个线程写入. PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。
    PipeInputStream -- 管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。
  9. 打印流是输出信息最方便的类:PrintStream和PrintWriter
  10. System类对IO的支持:System类中有三个常量PrintStream out、PrintStream error和InputStream in
  11. 缓冲流可以从缓冲区读写内容:
    BufferedOutputStream -- 该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统(内部有存储数据的缓冲区)。
    BufferedInputStream -- 创建 BufferedInputStream 时,会创建一个内部缓冲区数组。为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。
  12. 数据操作流与平台无关(主要针对Java基本数据类型的读写操作):
    DataOutputStream -- 数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。
    DataInputStream -- 从底层输入流中读取基本Java数据类型。
  13. 合并流主要将两个文件合并成一个文件:
    SequenceInputStream -- 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
  14. 压缩流为了减少传输时数据量提供专门的压缩流:ZipFile、ZipOutputStream、ZipInputStream和ZipEntry。
  15. 回退流可以把读取进来的某些数据重新退回到输入流中,不需要经过额外的程序去清理不需要的内容:PushbackInputStream 和 PushbackReader。

Git IO code

posted @ 2017-04-10 21:51  涣涣虚心  阅读(126)  评论(0编辑  收藏  举报