Java I/O

作者: 乘瓠散人 | 来源:发表于2017-12-03 12:01 被阅读3次

流可以理解为一个有顺序的,有起点和终点的数据序列,输入流表示从一个源读取数据,输出流表示向一个目标写数据。


image.png

字节流和字符流
字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象。本质是基于字节流读取时,去查了查指定的码表。
字节流和字符流的区别:

  • 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
  • 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
    只要是处理纯文本数据,优先考虑使用字符流,除此之外使用字节流。
  1. 字节输入流InputStream
  • InputStream是所有输入字节流的父类,它是一个抽象类
  • ByteArrayInputStream,StringBufferInputStream(废弃),FileInputStream是三种基本介质流,分别从Byte[],StringBuffer,和本地文件中读取数据。PipedInputStream是从与其它线程共用的管道中读取数据。
  • ObjectInputStream和所有的FilterInputStream的子类都是装饰流。
  1. 字节输出流OutputStream
  • OutputStream是所有输出字节流的父类,它是一个抽象类
  • ByteArrayOutputStream,FileOutputStream是两种基本介质流,分别向Byte[]和本地文件中写入数据。PipedOutputStream是向与其它线程共用的管道中写入数据。
  • ObjectOutputStream和所有的FilterOutputStream的子类都是装饰流。
  • PrintStream可以认为是一个辅助工具,主要可以向其他输出流或者FileInputStream写入数据,本身内部实现还是带缓冲的。是对其他流综合应用的一个工具,System.out就是PrintStream的实例。
  1. 字符输入流Reader
  • Reader是所有字符输入流的父类,它是一个抽象类。
  • CharArrayReader,StrignReader是两种基本的介质流,他们分别从char[],String中读取数据,PipedReader是从与其它线程共用的管道中读取数据。
  • BufferedReader是一个装饰器,负责装饰其它Reader对象
  • FilterReader是所有自定义装饰流的父类,其子类PushbackReader对Reader对象进行装饰,会增加一个行号。
  • InputStreamReader是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader是一个达到此功能的工具类。
  1. 字符输出流Writer
  • Writer是所有字符输出流的父类,它是一个抽象类。
  • CharArrayWriter,StringWriter是两种基本的介质流,他们分别向char[],String中写入数据,PipedWriter是向与其它线程共用的管道中写入数据。
  • BufferedWriter是一个装饰器,为Writer提供缓冲功能。
  • PrintWriter和PrintStream极其相似,功能和使用也相似。
  • OutputStreamWriter是一个连接字节流和字符流的桥梁,它将字符流转变为字节流。FileWriter是一个达到此功能的工具类。

相关文章

  • 线上学习资料汇总_新

    1. Java I/O 这些年一直记不住的 Java I/O 深入分析 Java I/O 的工作机制 NIO 入门...

  • NIO.2-简介

    More New I/O Java 7 中的 More New I/O APIs,通过在 java.nio.cha...

  • Java & Groovy & Scala & Kotlin -

    Overview 文章介绍的 I/O 主要用于本地文件读写,不涉及网络 I/O。 Java 篇 Java 中的 I...

  • I/O

    Java I/O 总结 理解Java中字符流与字节流的区别 深入学习 Java 序列化 Java I/O 操作及优...

  • 知识总结:I/O模型基础

    I/O基础 1、java1.4之前,java对I/O支持不完善,存在以下问题: 没有数据缓冲区,I/O性能存在问题...

  • Netty 权威指南笔记(一):网络 I/O 模型和 Java

    Netty 权威指南笔记(一):网络 I/O 模型和 Java IO 入门 Java I/O 模型的实现离不开底层...

  • Java I/O

    Java I/O主要包括三个部分1.流式部分2.非流式部分3.其他类 1.字符流 字符流处理文本数据,在java中...

  • java I/O

    一.文件/文件夹File 二.InputStream/OutputStream字节输入输出流 三.关闭流的方式 四...

  • Java I/O

    如果当初陪着你的人走远了,那些日子回忆起来会模糊吗? mark 标记reset 重置exist 存在modifie...

  • Java I/O

    流可以理解为一个有顺序的,有起点和终点的数据序列,输入流表示从一个源读取数据,输出流表示向一个目标写数据。 字节流...

网友评论

      本文标题:Java I/O

      本文链接:https://www.haomeiwen.com/subject/hghabxtx.html