【Java高级特性】I/O流——认识流

1.概述

1.Java程序通过流来读写文件。流是指一连串流程的字符,是以先进先出的方式发送和接收数据的通道。

2.流分为输入流和输出流,输入/输出流是相对于计算机内存来说的。数据存储到内存中,则为输入流;从内存输出数据,则为输出流。

3.读文件是指从文件中读取数据到内存中;写文件是指把内存中的数据写入到文件中。

4.Java的输出流主要有OutputStream类和Writer类作为基类,输入流主要由InputStream类和Reader类作为基类。在程序中,这些输入/输出流类的对象称为流对象。

5.可以通过流对象将内存中的数据以流的方式写入文件,也可以通过流对象将文件中的数据以流的方式读取到内存。

6.构造流对象时往往会和数据源(如文件)联系起来。数据源分为源数据源和目标数据源。输入流关联的是源数据源;输出流关联的是目标数据源。

2.字节流和字符流

输入/输出流分为字节流和字符流。

字节流:8位通用字节流,基本单位是字节。字节流的基类是InputStream类和OutputStream类,这两个类都是抽象类,不能实例化。

字符流:16位Unicode字符流,基本单位是Unicode字符。字符流的基类是Reader类和Writer类,这两个类都是抽象类,不能实例化。

InputStream类常用方法:

InputStream类的常用子类FileInputStream,用于从文件中读取数据。

OutputSream类常用方法:

OutputStream类的常用子类FileOutputStream,用于向文件写入数据。

Reader类常用方法:

Reader类常用子类BufferedReader,接受Reader对象作为参数,并对其添加字符缓冲器。

Writer类常用方法:

Writer类的常用子类有BufferedWriter,用于将数据缓冲到字符输出流。

3.字符流VS字节流

字符流最适合用来处理字符串和文本,因为它们支持国际上大多数的字符集和语言。

在操作上字节流和字符流还有一个区别,字符流在操作时使用了缓冲区(内部存储器),而字节流在操作时直接操作文件,不会使用缓冲区。

经验分享 程序员 微信小程序 职场和发展