Java io流

Java io流

总览

io流总览

1. 流的概念和作用

1.1 流的分类

1.1.1 根据数据流的方向分为:
  • 输入流
  • 输出流
1.1.2 根据处理数据单位的不同分为:
  • 字节流
  • 字符流

1.2 4个基本的抽象流类型

           输入流      输出流

      字节流  InputStream  outputStream

      字符流  Reader      Writer

img

img

img

img

1.3 五类一接口

  1. File(文件特征与管理):File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。
  2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。
  3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。
  4. Reader(文件格式操作):抽象类,基于字符的输入操作。
  5. Writer(文件格式操作):抽象类,基于字符的输出操作。

2. 字节流

2.1 InputStream 字节输入流

  1. InputStream类是字节输入流的抽象类,是所有字节输入流的父类。

InputStream

  1. InputStream的常用方法:
int available() 从下一次调用此输入流的方法返回可从该输入流读取(或跳过)的字节数,而不会阻塞。 
void close() 关闭此输入流并释放与流相关联的任何系统资源。 
void mark(int readlimit) 标记此输入流中的当前位置。 
boolean markSupported() 测试此输入流是否支持 mark和 reset方法。 
abstract int read() 从输入流读取数据的下一个字节。 
int read(byte[] b) 从输入流中读取一些字节数,并将它们存储到缓冲器阵列 b 。 
int read(byte[] b, int off, int len) 从输入流读取最多 len个字节的数据到字节数组。 
byte[] readAllBytes() 从输入流读取所有剩余字节。 
int readNBytes(byte[] b, int off, int len) 将所请求的字节数从输入流读入给定的字节数组。 
void reset() 将此流重新定位到最后在此输入流上调用 mark方法时的位置。 
long skip(long n) 跳过并丢弃来自此输入流的 n字节的数据。 
long transferTo(OutputStream out) 从该输入流中读取所有字节,并按读取的顺序将字节写入给定的输出流。 
2.1.1 FileInputStream
  1. FileInputStream的构造方法:
FileInputStream​(File file) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。 
FileInputStream​(FileDescriptor fdObj) 通过使用文件描述符 fdObj创建 FileInputStream ,该文件描述符表示与文件系统中的实际文件的现有连接。 
FileInputStream​(String name) 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。 
  1. FileInputStream的方法列表:
int available​() 返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 
void close​() 关闭此文件输入流并释放与流相关联的任何系统资源。 
protected void finalize​() 已过时。
finalize方法已被弃用。 为了执行清理而覆盖finalize子类应该修改为使用替代清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()的规范。 
FileChannel getChannel​() 返回与此文件输入流相关联的唯一的FileChannel对象。 
FileDescriptor getFD​() 返回表示与此 FileInputStream正在使用的文件系统中的实际文件的连接的 FileDescriptor对象。 
int read​() 从该输入流读取一个字节的数据。 
int read​(byte[] b) 从该输入流读取最多 b.length个字节的数据到一个字节数组。 
int read​(byte[] b, int off, int len) 从该输入流读取最多 len个字节的数据到字节数组。 
long skip​(long n) 跳过并从输入流中丢弃 n字节的数据。 

2.2 OutPutStream 字节输出流

  1. OutputStream类是字节输出流的抽象类,是所有字节输出流的父类。

img

  1. OutputStream字节输出流的方法:
void close​() 关闭此输出流并释放与此流相关联的任何系统资源。 
void flush​() 刷新此输出流并强制任何缓冲的输出字节被写出。 
void write​(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。 
void write​(byte[] b, int off, int len) 从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。 
abstract void write​(int b) 将指定的字节写入此输出流。 
2.2.1 FileOutputStream
  1. FileOutputStream的构造方法
FileOutputStream​(File file) 创建文件输出流以写入由指定的 File对象表示的文件。 
FileOutputStream​(FileDescriptor fdObj) 创建文件输出流以写入指定的文件描述符,表示与文件系统中实际文件的现有连接。 
FileOutputStream​(File file, boolean append) 创建文件输出流以写入由指定的 File对象表示的文件。 
FileOutputStream​(String name) 创建文件输出流以指定的名称写入文件。 
FileOutputStream​(String name, boolean append) 创建文件输出流以指定的名称写入文件。 
  1. FileOutputStream的方法列表
void close​() 关闭此文件输出流并释放与此流相关联的任何系统资源。 
protected void finalize​() 已过时。
finalize方法已被弃用。 为了执行清理,覆盖finalize子类应被修改为使用替代的清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 。 有关迁移选项的更多信息,请参阅Object.finalize()的规范。 
FileChannel getChannel​() 返回与此文件输出流相关联的唯一的FileChannel对象。 
FileDescriptor getFD​() 返回与此流相关联的文件描述符。 
void write​(byte[] b) 将 b.length字节从指定的字节数组写入此文件输出流。 
void write​(byte[] b, int off, int len) 将 len字节从指定的字节数组开始,从偏移量 off开始写入此文件输出流。 
void write​(int b) 将指定的字节写入此文件输出流。 

3. 字符流

3.1 Reader 字符输入流

img

  1. Reader的方法列表
abstract void close​() 关闭流并释放与之相关联的任何系统资源。 
void mark​(int readAheadLimit) 标记流中的当前位置。 
boolean markSupported​() 告诉这个流是否支持mark()操作。 
int read​() 读一个字符 
int read​(char[] cbuf) 将字符读入数组。 
abstract int read​(char[] cbuf, int off, int len) 将字符读入数组的一部分。 
int read​(CharBuffer target) 尝试将字符读入指定的字符缓冲区。 
boolean ready​() 告诉这个流是否准备好被读取。 
void reset​() 重置流。 
long skip​(long n) 跳过字符 
3.1.1 FileReader
  1. FileReader的构造方法
FileReader​(File file) 创建一个新的 FileReader ,给出 File读取。 
FileReader​(FileDescriptor fd) 创建一个新的 FileReader ,给予 FileDescriptor从中读取。 
FileReader​(String fileName) 创建一个新的 FileReader ,给定要读取的文件的名称。 
3.1.2 BufferedReader
  1. BufferedReader的构造方法
BufferedReader​(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 
BufferedReader​(Reader in, int sz) 创建使用指定大小的输入缓冲区的缓冲字符输入流。 
  1. BufferedReader的方法列表
void close​() 关闭流并释放与之相关联的任何系统资源。 
Stream<String> lines​() 返回一个 Stream ,其元素是从这个 BufferedReader读取的行。 
void mark​(int readAheadLimit) 标记流中的当前位置。 
boolean markSupported​() 告诉这个流是否支持mark()操作。 
int read​() 读一个字符 
int read​(char[] cbuf, int off, int len) 将字符读入数组的一部分。 
String readLine​() 读一行文字。 
boolean ready​() 告诉这个流是否准备好被读取。 
void reset​() 将流重置为最近的标记。 
long skip​(long n) 跳过字符 

3.2 Writer 字符输出流

img

Writer是字符输出流的基类,Writer的主要方法:

Writer append​(char c) 将指定的字符附加到此作者
Writer append​(CharSequence csq) 将指定的字符序列附加到此作者
Writer append​(CharSequence csq, int start, int end) 将指定字符序列的子序列附加到此作者 
abstract void close​() 关闭流,先刷新
abstract void flush​() 刷新流 
void write​(char[] cbuf) 写入一个字符数组。 
abstract void write​(char[] cbuf, int off, int len) 写入字符数组的一部分 
void write​(int c) 写一个字符 
void write​(String str) 写一个字符串 
void write​(String str, int off, int len) 写一个字符串的一部分
3.2.1 FileWriter
  1. FileWriter的构造方法
OutputStreamWriter​(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter
OutputStreamWriter​(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter
OutputStreamWriter​(OutputStream out, Charset cs) 创建一个使用给定字符集的OutputStreamWriter
OutputStreamWriter​(OutputStream out, CharsetEncoder enc) 创建一个使用给定字符集编码器的OutputStreamWriter 
  1. FileWriter的方法列表
Writer append​(CharSequence csq) 将指定的字符序列附加到此作者。 
Writer append​(CharSequence csq, int start, int end) 将指定字符序列的子序列附加到此作者。 
void close​() 关闭流,先刷新。 
void flush​() 刷新流。 
String getEncoding​() 返回此流使用的字符编码的名称。 
void write​(char[] cbuf, int off, int len) 写入字符数组的一部分。 
void write​(int c) 写一个字符 
void write​(String str, int off, int len) 写一个字符串的一部分。 
3.2.2 BufferedWriter

BufferedWriter 是缓冲字符输出流。它继承于Writer。
BufferedWriter 的作用是为其他字符输出流添加一些缓冲功能,使用BufferedWriter可以提高我们写入文件的效率。

  1. BufferedWriter的构造方法:
BufferedWriter​(Writer out) 创建使用默认大小的输出缓冲区的缓冲字符输出流。 
BufferedWriter​(Writer out, int sz) 创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。 
  1. BufferedWriter的方法列表:
void close​() 关闭流,先刷新。 
void flush​() 刷新流。 
void newLine​() 写一行行分隔符。 
void write​(char[] cbuf, int off, int len) 写入字符数组的一部分。 
void write​(int c) 写一个字符 
void write​(String s, int off, int len) 写一个字符串的一部分。 

4. File类

File 是“文件”和“目录路径名”的抽象表示形式。
File 直接继承于Object,实现了Serializable接口和Comparable接口。实现Serializable接口,意味着File对象支持序列化操作。而实现Comparable接口,意味着File对象之间可以比较大小;File能直接被存储在有序集合(如TreeSet、TreeMap中)。

  1. File的构造方法:
File​(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。 
File​(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 
File​(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。 
File​(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
  1. File的方法列表:
boolean canExecute​() 测试应用程序是否可以执行此抽象路径名表示的文件。 
boolean canRead​() 测试应用程序是否可以读取由此抽象路径名表示的文件。 
boolean canWrite​() 测试应用程序是否可以修改由此抽象路径名表示的文件。 
int compareTo​(File pathname) 比较两个抽象的路径名字典。 
boolean createNewFile​() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 
static File createTempFile​(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。 
static File createTempFile​(String prefix, String suffix, File directory) 在指定的目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 
boolean delete​() 删除由此抽象路径名表示的文件或目录。 
void deleteOnExit​() 请求在虚拟机终止时删除由此抽象路径名表示的文件或目录。 
boolean equals​(Object obj) 测试此抽象路径名与给定对象的相等性。 
boolean exists​() 测试此抽象路径名表示的文件或目录是否存在。 
File getAbsoluteFile​() 返回此抽象路径名的绝对形式。 
String getAbsolutePath​() 返回此抽象路径名的绝对路径名字符串。 
File getCanonicalFile​() 返回此抽象路径名的规范形式。 
String getCanonicalPath​() 返回此抽象路径名的规范路径名字符串。 
long getFreeSpace​() 通过此抽象路径名返回分区 named中未分配字节的数量。 
String getName​() 返回由此抽象路径名表示的文件或目录的名称。 
String getParent​() 返回此抽象路径名的父目录的路径名字符串,如果此路径名未命名为父目录,则返回 null 。 
File getParentFile​() 返回此抽象路径名的父目录的抽象路径名,如果此路径名不指定父目录,则返回 null 。 
String getPath​() 将此抽象路径名转换为路径名字符串。 
long getTotalSpace​() 通过此抽象路径名返回分区 named的大小。 
long getUsableSpace​() 通过此抽象路径名返回分区 named上此虚拟机可用的字节数。 
int hashCode​() 计算此抽象路径名的哈希码。 
boolean isAbsolute​() 测试这个抽象路径名是否是绝对的。 
boolean isDirectory​() 测试此抽象路径名表示的文件是否为目录。 
boolean isFile​() 测试此抽象路径名表示的文件是否为普通文件。 
boolean isHidden​() 测试此抽象路径名命名的文件是否为隐藏文件。 
long lastModified​() 返回此抽象路径名表示的文件上次修改的时间。 
long length​() 返回由此抽象路径名表示的文件的长度。 
String[] list​() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。 
String[] list​(FilenameFilter filter) 返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。 
File[] listFiles​() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。 
File[] listFiles​(FileFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。 
File[] listFiles​(FilenameFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。 
static File[] listRoots​() 列出可用的文件系统根。 
boolean mkdir​() 创建由此抽象路径名命名的目录。 
boolean mkdirs​() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 
boolean renameTo​(File dest) 重命名由此抽象路径名表示的文件。 
boolean setExecutable​(boolean executable) 为此抽象路径名设置所有者的执行权限的便利方法。 
boolean setExecutable​(boolean executable, boolean ownerOnly) 设置该抽象路径名的所有者或每个人的执行权限。 
boolean setLastModified​(long time) 设置由此抽象路径名命名的文件或目录的最后修改时间。 
boolean setReadable​(boolean readable) 一种方便的方法来设置所有者对此抽象路径名的读取权限。 
boolean setReadable​(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或每个人的读取权限。 
boolean setReadOnly​() 标记由此抽象路径名命名的文件或目录,以便只允许读取操作。 
boolean setWritable​(boolean writable) 一种方便的方法来设置所有者对此抽象路径名的写入权限。 
boolean setWritable​(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或每个人的写入权限。 
Path toPath​() 返回从此抽象路径构造的一个java.nio.file.Path对象。 
String toString​() 返回此抽象路径名的路径名字符串。 
URI toURI​() 构造一个表示此抽象路径名的 file: URI。 
URL toURL​() 已过时。 此方法不会自动转义URL中非法的字符。 建议在新的代码转换的抽象路径到URL通过先转换成URI,经由toURI方法,然后经由转换URI为URL URI.toURL方法。 

posted @ 2021-11-09 15:40  exile464  阅读(35)  评论(0)    收藏  举报