Java-基础-IO

61次阅读

共计 1734 个字符,预计需要花费 5 分钟才能阅读完成。

Java I/O
编程语言中 I/O 类库中常使用流这个抽象概念代表任何有能力产生数据的数据源对象或接受数据的接收端对象
字节流和字符流:
字节流:以字节为单位,每次次读入或读出是 8 位数据。可以读任何类型数据。字符流:以字符为单位,每次次读入或读出是 16 位数据。其只能读取字符类型数据。
输出流和输入流:
输出流:从内存读出到文件。只能进行写操作。输入流:从文件读入到内存。只能进行读操作。注意:这里的出和入,都是相对于系统内存而言的。
节点流和处理流:
节点流:直接与数据源相连,读入或读出。处理流:与节点流一块使用,在节点流的基础上,再套接一层,套接在节点流上的就是处理流。为什么要有处理流?直接使用节点流,读写不方便,为了更快的读写文件,才有了处理流。
InputStream: 从不同数据源产生的输入类数据源包括:

字节数组
String 对象
文件
“管道”,从一端输入另一端输出
一个由其他种类的流组成的序列,以便我们可以将他们收集合并到一个流内
其他数据源,如 Internet 等

ByteArrayInputStream, StringBufferStream, FileInputStream: 是三种基本的介质流,它们分别从 Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream 是从与其它线程共用的管道中读取数据。PipedInputStream 的一个实例要和 PipedOutputStream 的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。DataInputStream:将基础数据类型读取出来 ObjectInputStream 和所有 FilterInputStream 的子类都是装饰流(装饰器模式的主角)。
OutputStream 向目标输出:字节数组,文件或管道
ByteArrayOutputStream、FileOutputStream:是两种基本的介质流,它们分别向 - Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据。DataOutputStream 将基础数据类型写入到文件中 ObjectOutputStream 和所有 FilterOutputStream 的子类都是装饰流。
字符输入流 Reader::
FileReader、CharReader、StringReader 是三种基本的介质流,它们分在本地文件、Char 数组、String 中读取数据。PipedReader:是从与其它线程共用的管道中读取数据 BufferedReader:加缓冲功能,避免频繁读写硬盘 InputStreamReader:是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。
字符输出流 Writer:
StringWriter: 向 String 中写入数据。CharArrayWriter:实现一个可用作字符输入流的字符缓冲区 PipedWriter: 是向与其它线程共用的管道中写入数据 BufferedWriter:增加缓冲功能,避免频繁读写硬盘。PrintWriter 和 PrintStream 将对象的格式表示打印到文本输出流。极其类似,功能和使用也非常相似 OutputStreamWriter:是 OutputStream 到 Writer 转换的桥梁,它的子类 FileWriter 其实就是一个实现此功能的具体类(具体可以研究一 SourceCode)。功能和使用和 OutputStream 极其类似,后面会有它们的对应图。
使用处理流提高效率,按照处理流分类基本数据类型 DataInputStreamDataOutputStream 提高数据读写效率
转化流 InputStreamReader 将 InputStream 转为 ReaderOutputStreamWriter 将 OutputStream 转为 Writer
打印流 PrintStream PrintWriter 打印到控制台上
Buffer 缓冲流提高访问效率,避免每次通过磁盘处理
对象流 ObjectInputStream 对象反序列化 ObjectOutputStream 对象序列化封装对象直接输出
合并流 SequenceInputStream 将两个或多个输入流当成一个输入流一次读取

正文完
 0