File类可以对文件或姆的属性进行操作,但是不能访问文件的内容。
即File类不能从文件中读取数据或往文件中写数据。

Java中通过流来读写文件。
  • 读文件是指把文件中的数据读取到内存中。
  • 写文件是指把内存中的数据写入到文件中。
流是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。
  • 流分为输入流和输出流
  • 输入、输出流是相对于计算机内存来说的,
  • 如果数据输入到内存中则称为输入流。
  • 如果数据从内存中输出则称为输出流。
  • 输入流主要由 InputStreamReader 作为基类
  • 输出流主要由 OutputStreamWrite 作为基类
在程序中,这些输入、输出流类的对象称为流对象。
  • 可以通过流对象将内存中的数据以流的方式写入文件
  • 可以通过流对象将文件中的数据以流的方式读取到内存
构造流对象时往往会和数据源(文件)联系起来,数据源分为源数据源和目标数据源。
  • 输入流关联的是源数据源
  • 输出流关联的是目标数据源
输入、输出流又分为字节流和字符流两种形式。
  • 字节流是8位通用字节流,基本单位是字节
  • 字节流的基类是 InputStream 类和 OutputStream 类,皆为抽象类
  • 字符流是16位 Unicode 字符流,基本单位是 Unicode 字符
  • 字符流的基类是 Reader 类和 Writer
  • 字符流最时候用来处理字符串和文本,因为它们支持国际上大多数的字符集和语言

InputStream类的常用方法

  1. int read() : 从输入流中读取下一个字节数据
  2. int read(byte[] b) :
  • 从输入流中读取数据
  • 并将数据存储在缓冲区数组b中
  • 返回实际读取的字节数
  1. int read(byte[] b,int off,int len) :
  • 从输入流中读取最多len长度的字节
  • 保存到字节数组b中
  • 保存的位置从off开始
  1. void close() : 关闭输入流

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

OutputStream类的常用方法

  1. void write(int c) : 将指定的字节数据写入此输出流中
  2. void write(byte[] buf) : 将数组buf中的所有字节写入此输出流中
  3. void write(byte[] b,int off,int len):
  • 将字节数组b中从偏移量off开始的长度为len的字节数据输出到输出流中
  1. void close() : 关闭输出流

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

Reader类的常用方法

  1. int read() : 从输入流中读取单个字符,返回所读取的字符数据
  2. int read(byte[] c) :
  • 从输入流中最多读取c.length个字符
  • 保存到字符数组c中
  • 返回实际读取的字符数
  1. int read(char[] c,int off,int len)
  • 从输入流中读取最多len个字符
  • 保存到字符数组c中
  • 保存的位置从off开始
  • 返回实际读取的字符数
  1. void close() : 关闭流

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

Write类的常用方法

  1. void write(String str) : 将str字符串里包含的字符输出到指定的输出流中
  2. void write(String str,int off,int len) :
  • 将str字符串里从off位置开始
  • 长度为len的多个字符输出到输出流中
  1. void close() :关闭输出流
  2. void flush() : 刷新输出流

Write类的常用子类为BufferWriter,用于将数据缓冲到字符输出流

注意:

在操作上字节流和字符流有一个区别:

  • 字符流在操作时使用了缓冲区(内部存储器)
  • 而字节流在操作时直接操作文件 ,不会使用缓冲区。

所有的这些方法在出现错误时,都会抛出IOExcption异常