1.流的分类

  • 按单位
    • 字节流:以字节为单位(8位),可以读写所有数据
    • 字符流:以字符为单位(16位),只能读写文本数据
  • 按功能
    • 节点流:具有实际传输数据的读写功能。
    • 过滤流:在节点流的基础之上增强功能。
  • 按方向
    • 输入流:将 存储设备 中的内容读入到 内存 中。
    • 输出流:将 内存 中的内容写入到 存储设备 中。

InputStreamReaderOutputStreamWriter,前者负责将InputStream转换为Reader,而后者负责将OutputStream转换为Writer
IO 流 —— 【基础知识】

2.字节流

2.1 InputStream的主要功能是将数据一个字节一个字节的读到内存,InputStream是一个抽象类。

  • int available() 返回当前输入流中可以读取(或跳过)的字节数量的估量值(当前输入流没有被另一个方法请求而导致阻塞)。
  • void close() 关闭当前输入流并且释放输入流占用的所有系统资源。
  • abstract int read() 从当前位置开始,从输入流中读取下一个字节的数据(若读到流的尾部,返回-1)。
  • int read(byte[] b) 从当前位置开始,从输入流中读取b.length个字节的数据存放到b中(实际读取到的数据要看输入流中的字节数,最多读取的数量就是b.length,返回值为实际读取的字节数)。
  • int read(byte[] b, int off, int len) 从当前位置开始,从输入流中读取len个字节的数据存放到b中(字节存放的位置为b[off],b[off+1],… 。实际中读取的数据可能并没有len个字节,具体看输入流中还剩余在多少数据,返回值为实际读取的字节数)。

2.2 OutputStream的主要作用是将数据一个字节一个子集的写入到文件或者网络中,OutputStream也是抽象类。

  • void close() 关闭输出流并释放该输出流占用的所有系统资源。
  • void flush() 刷新当前输出流,并将该流中缓冲的字节数据全部写入到磁盘。
  • void write(byte[] b) 将字节数组b中的数据全部写入到输出流中,要写入到磁盘需要调用flush()函数。
  • void write(byte[]b, int off, int len) 将字节数组b中的数据,从off位置开始算起,写入len个字节到输出流。
  • abstract void write(int b) 先将int转换为byte类型,然后将低位数据写入到输出流中。

3.字符流

3.1 Reader的主要功能是将数据一个字符一个字符的读入到内存,Reader是一个抽象类。

  • abstract viud close() 关闭流,并且释放该流占用的所有系统资源。
  • int read() 从流中读取单个字符。
  • int read(char[] cbuf) 从当前位置读取cbuf.length个字符到cbuf数组中,但实际读取的字符个数取决于流中剩余字符个数,返回值为实际读取的字符个数。
  • abstract int read(char[] cbuf, int off, int len) 从当前位置开始,从输入流中读取len个字节的数据存放到b中,字节存放的位置为b[off],b[off+1],… 。实际中读取的数据可能并没有len个字节,具体看输入流中还剩余在多少数据,返回值为实际读取的字节数。

3.2 Writer的主要功能是将数据一个字符一个字符的写入到文件或者网络中,Writer也是抽象类。

  • Writer append(char c) 追加字符c到Writer流中,追加到尾部。返回值为追加后的此Writer。
  • Writer append(CharSequence csq)追加字符序列csq到Writer流中,追加到尾部,返回值为追加后的此Writer。
  • Writer append(CharSequence csq,int start,int end) 追加字符序列csq的子序列到Writer流中,追加到尾部,返回值为追加后的此序列。
  • abstract void close() 关闭流,在关闭之前会先调用flush()
  • abstract void flush() 刷新流,并将已经在流中的数据写入到磁盘指定位置。
  • void write(char[] cbuf)将字符数组写入到流中。
  • abstract void write(char[] cbuf, int off, int len)将字符数组cbuf中的指定部分写入到流中,从off开始,写入len个字符。
  • void write(int c) 取int型的低16位组成一个字符,然后将这个字符写入到流中,忽略高16位数据。
  • void write(String str)将字符串写入到流中。
  • void Write(String str, int off, int len) 将字符串·str·指定位置的子串写入到流中,子串起始位置为off,子串长度为len。

4.File类

代表物理盘符中的-一个文件或者文件夹。

  • createNewFile() 创建一个新文件
  • mkdir() 创建一 个新目录
  • delete() 删除文件或空目录
  • exists() 判断File对象所对象所代表的对象是否存在
  • getAbsolutePath() 获取文件的绝对路径
  • getName() 取得名字
  • getParent() 获取文件/目录所在的目录
  • isDirectory() 是否是 目录
  • isFile() 是否是文件
  • length() 获得文件的长度
  • listFiles() 列出目录中的所有内容
  • renameTo() 修改文件名

5.FileFilter接口

public interface FileFilter

  • boolean accept (File pathname) 当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中。

相关文章: