File类可以对文件或姆的属性进行操作,但是不能访问文件的内容。
即File类不能从文件中读取数据或往文件中写数据。
流
Java中通过流来读写文件。
- 读文件是指把文件中的数据读取到内存中。
- 写文件是指把内存中的数据写入到文件中。
流是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。
- 流分为输入流和输出流
- 输入、输出流是相对于计算机内存来说的,
- 如果数据输入到内存中则称为输入流。
- 如果数据从内存中输出则称为输出流。
- 输入流主要由 InputStream 和 Reader 作为基类
- 输出流主要由 OutputStream 和 Write 作为基类
在程序中,这些输入、输出流类的对象称为流对象。
- 可以通过流对象将内存中的数据以流的方式写入文件
- 可以通过流对象将文件中的数据以流的方式读取到内存
构造流对象时往往会和数据源(文件)联系起来,数据源分为源数据源和目标数据源。
- 输入流关联的是源数据源
- 输出流关联的是目标数据源
输入、输出流又分为字节流和字符流两种形式。
- 字节流是8位通用字节流,基本单位是字节
- 字节流的基类是 InputStream 类和 OutputStream 类,皆为抽象类
- 字符流是16位 Unicode 字符流,基本单位是 Unicode 字符
- 字符流的基类是 Reader 类和 Writer 类
- 字符流最时候用来处理字符串和文本,因为它们支持国际上大多数的字符集和语言
InputStream类的常用方法
- int read() : 从输入流中读取下一个字节数据
- int read(byte[] b) :
- 从输入流中读取数据
- 并将数据存储在缓冲区数组b中
- 返回实际读取的字节数
- int read(byte[] b,int off,int len) :
- 从输入流中读取最多len长度的字节
- 保存到字节数组b中
- 保存的位置从off开始
- void close() : 关闭输入流
InputStream类的常用子类有FileInputStream,用于从文件中读取数据
OutputStream类的常用方法
- void write(int c) : 将指定的字节数据写入此输出流中
- void write(byte[] buf) : 将数组buf中的所有字节写入此输出流中
- void write(byte[] b,int off,int len):
- 将字节数组b中从偏移量off开始的长度为len的字节数据输出到输出流中
- void close() : 关闭输出流
OutputStream类的常用子类为FileOutputStream,用于向文件写数据
Reader类的常用方法
- int read() : 从输入流中读取单个字符,返回所读取的字符数据
- int read(byte[] c) :
- 从输入流中最多读取c.length个字符
- 保存到字符数组c中
- 返回实际读取的字符数
- int read(char[] c,int off,int len) :
- 从输入流中读取最多len个字符
- 保存到字符数组c中
- 保存的位置从off开始
- 返回实际读取的字符数
- void close() : 关闭流
Reader类的常用子类为BufferReader,接受Reader对象作为参数,并对其添加字符缓冲器
Write类的常用方法
- void write(String str) : 将str字符串里包含的字符输出到指定的输出流中
- void write(String str,int off,int len) :
- 将str字符串里从off位置开始
- 长度为len的多个字符输出到输出流中
- void close() :关闭输出流
- void flush() : 刷新输出流
Write类的常用子类为BufferWriter,用于将数据缓冲到字符输出流
注意:
在操作上字节流和字符流有一个区别:
- 字符流在操作时使用了缓冲区(内部存储器)
- 而字节流在操作时直接操作文件 ,不会使用缓冲区。
所有的这些方法在出现错误时,都会抛出IOExcption异常