Java ------- I/O (二)
io 包中的File 类对文件或目录中的属性进行操作,不能从文件中读取数据或往文件中写数据(读文件是把文件中的数据读取到内存中,写文件是把内存中的数据写到文件中。)所以引入了 流。
流: 指一连串流动的字符,是以先进先出的方式发送和接受数据的通道。
流分为输入流和输出流,输入/输出流是相对于计算机内存来说的,如果数据输入到内存,称为输入流,从内存输出则称输出流。
在java.io 包中有许多输入/输出流的API,这些输入/输出流类的对象称为流对象。这些流对象也可以将内存中的数据以流的方式读取写入文件。
构造流对象时往往会和数据源(如文件)联系起来。数据源分为源数据源和目标数据源。输入流关联的是源数据源,输出流关联的是目标数据源。
流按照处理数据单可以分为字节流和字符流,
字节流是8 位通用字节流,其基本单位是 字节,字节流的基类是InputStream 类和OutputStream 类,它们是抽象类。
字符流是16 位的Unicode字符流,其单位是Unicode 字符。字符流最适合用来处理字符串和文本,因为他们支持国际上大多数的字符集和语言。字符流的基类是Reader 和 Writer 类,他们也是抽象类。
InputStream 类的常用子类有 FileInputStream , 用于从文件中读取数据
OutStream 类的常用子类有 FileOutStream , 用于向文件写数据
Reader 类的常用子类为 BufferedReader,接受Reader 对象作为参数,并对其添加字符缓冲器
Writer 类的常用子类为 BufferedWriter, 用于将数据缓冲到字符输出流
字符流与字节流相比
1、字符流在操作上使用了缓冲区(内部存储器),而字节流在操作时直接操作文件,不会使用缓冲区
2、这些方法在出现错误时都会抛出IOException 异常