输入流 输出流

1. 相关概念:

child::

2. 梗概:

输入流用于从源读取数据,输出流用于向目标写数据。 属于顺序流

3. IO流类的层次

4. 使用输入输出流的步骤:

  1. 传入文件给构造方法, 创建输入/输出流的实例对象
  2. 使用对象中的读取/写入方法
  3. 关闭流

5. FileInputStream 输入流:

5.1. 梗概:

该流用于从文件读取数据

5.2. 从文件创建对象:

5.2.1. 直接传文件路径给构造方法:

可以使用字符串类型的文件名来创建一个输入流对象来读取文件: InputStream f = new FileInputStream("C:/java/hello");

5.2.2. 传文件对象给构造方法:

我们首先得使用 File() 方法来创建一个文件对象:

File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f)

5.3. 类中的常用方法

5.3.1. public void close() throws IOException{}

关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。

5.3.2. protected void finalize()throws IOException {}

这个方法清除与该文件的连接。确保在不再引用文件输入流, 然后再调用其 close 方法。抛出IOException异常。

5.3.3. read方法:

5.3.3.1. public int read(int r)throws IOException{}

这个方法从 InputStream 对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。

5.3.3.2. public int read(byte[] r) throws IOException{}

这个方法从输入流读取r.length长度的字节到数组r中。返回读取的字节数。如果是文件结尾则返回-1。

5.3.3.3. public int read(byte[] r, int off, int len) throws IOException{}

这个方法从输入流读取len长度的字节到数组r下标off处开始。返回读取的字节数。如果是文件结尾则返回-1。

5.3.3.4. 说明:

read()读出的流并不知道是什么类型, 所以要用byte数组存储 read()和write()方法一定会产生异常的

5.3.4. public int available() throws IOException{}

返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。

5.4. 其他输入流

除了 InputStream 外,还有一些其他的输入流,更多的细节参考下面链接:

6. FileOutputStream 输出流:

6.1. 梗概:

该类用来创建一个文件并向文件中写数据。

6.2. 机制:

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件

6.3. 从文件创建对象:

有两个构造方法可以用来创建 FileOutputStream 对象。

6.3.1. 直接传入文件路径给构造方法:

6.3.1.1. 实例:

OutputStream f = new FileOutputStream("C:/java/hello",true)

6.3.1.2. 说明:

第二个参数为可选参数, 默认为false, 表示是否在尾部追加

6.3.2. 传入文件对象给构造方法:

File f = new File("C:/java/hello");
OutputStream fOut = new FileOutputStream(f);

6.4. 类中常用方法

6.4.1. public void close() throws IOException{}

关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。

6.4.2. protected void finalize()throws IOException {}

这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。

6.4.3. write方法:

6.4.3.1. public void write(int w)throws IOException{}

这个方法把指定的字节写到输出流中。

6.4.3.2. public void write(byte[] w)

把指定数组w中w.length长度的字节写到OutputStream中。

6.4.3.3. public void write(byte[] w,int off, int len)

把指定数组w从off下标处开始, len长度的字节写到OutputStream中。

6.4.3.4. 说明:

read()和write()方法一定会产生异常的

6.4.4. flush():

刷空输出流, 将缓冲区的数据强制送出

6.5. 其他输出流

除了OutputStream外,还有一些其他的输出流,更多的细节参考下面链接:

7. 相关概念:

还有一些关于文件和I/O的类,我们也需要知道: