Java FileInputStream和FileOutputStream类的用法(附带实例)
FileInputStream是 Java 中的文件输入流,FileOutputStream 是 Java 中的文件输出流,本节逐个讲解它们的用法。
FileInputStream 类常用的构造方法如下:
通过字节输入流读取数据时,应该首先设定输入流的数据源,然后创建指向这个数据源的输入流,接着从输入流中读取数据,最后关闭输入流。
FileOutputStream 类常用的构造方法如下:
通过字节输出流输出数据时,应该首先设定输出流的目的地,然后创建指向这个目的地输出流,接着向输出流中写入数据,最后关闭输出流。
【实例 1】通过键盘接收一行数据,并写入磁盘的指定文件中。

图 1 运行结果
【实例 2】通过 FileInputStream 类和 FileOutputStream 类复制文件。

图 2 运行结果
Java FileInputStream类
Java 中的 FileInputStream 类继承自 InputStream 类,通过字节的方式读取文件,适合读取所有类型的文件(图像、视频和文本文件等)。FileInputStream 类常用的构造方法如下:
public FileInputStream(File file) throws FileNotFoundException public FileInputStream(String name) throws FileNotFoundException这两个方法分别通过给定的 File 对象和文件名字符串创建 FileInputStream 对象。如果文件不存在或出现其他问题,就会抛出 FileNotFoundException 异常,需要捕获处理。
通过字节输入流读取数据时,应该首先设定输入流的数据源,然后创建指向这个数据源的输入流,接着从输入流中读取数据,最后关闭输入流。
Java FileOutputStream类
FileOutputStream 类是 OutputStream 类的常用子类,通过字节的方式将数据写到文件中,适合所有类型的文件。FileOutputStream 类常用的构造方法如下:
public FileOutputStream(File file) throws IOException public FileOutputStream(String name) throws IOException public FileOutputStream(File file,boolean append) throws IOException public FileOutputStream(String name,boolean append) throws IOException在创建输出流时,如果文件不存在或出现其他问题,就会抛出 IOException 异常,需要捕获处理。
通过字节输出流输出数据时,应该首先设定输出流的目的地,然后创建指向这个目的地输出流,接着向输出流中写入数据,最后关闭输出流。
实例演示
下面通过实例演示 FileInputStream 类和 FileOutputStream 类的应用。【实例 1】通过键盘接收一行数据,并写入磁盘的指定文件中。
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class Example10_8 {
public static void main(String[] args) {
InputStream in = System.in;
System.out.println("请输入一行数据:");
byte[] b = new byte[64];
FileOutputStream out = null;
try {
// 读入数据,存入字节数组 b 中
in.read(b);
// 创建文件字节输出流对象 out,指向指定的文件
out = new FileOutputStream("D:\\chapter10\\fileiotest\\text1.txt");
// 写入输出流中
out.write(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.flush();
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果如下图所示。在控制台中,通过键盘输入“hello world”,在指定文件 text1.txt 中保存此字符串:
图 1 运行结果
【实例 2】通过 FileInputStream 类和 FileOutputStream 类复制文件。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo{
public static void main(String[] args) throws IOException {
// 创建文件输入流用于读取源文件
FileInputStream fis = new FileInputStream(
"D:\\chapter\\chapter10\\src\\Example10_9.java");
// 创建文件输出流,复制新文件
FileOutputStream fos = new FileOutputStream(
"D:\\chapter10\\back_Example10_9.java");
// 创建一个10KB的缓存区
byte[] data = new byte[1024 * 10];
int len;
long s = System.currentTimeMillis();
// 从源文件中循环读取信息并存入新文件中
while ((len = fis.read(data)) != -1) {
fos.write(data, 0, len);
}
// 返回当前时间(以毫秒为单位)
long e = System.currentTimeMillis();
// 求复制文件内容花费的时间
System.out.println("复制花费的时间:" + (e - s));
// 关闭输入流
fis.close();
// 关闭输出流
fos.close();
}
}
运行结果如下图所示。指定的文件夹中出现了复制的文件,复制内容花费 2 毫秒。
图 2 运行结果
ICP备案:
公安联网备案: