在应用程序中,IO流通常都是成对出现的,即输入流和输出流一起使用。例如文件的拷贝就需要通过输入流来读取文件中的数据,通过输出流将数据写入文件。接下来通过一个案例来演示如何进行文件内容的拷贝,首先在D盘创建文件夹one,和two,然后在one文件夹中存放一个“example.txt”文件,拷贝文件的代码如例所示。import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class IOTest {
public static void main(String[] args) {
try {
// 创建一个字节输入流,用于读取当前目录下source 文件夹中的mp3 文件
InputStream in = new FileInputStream("D:/one/example.txt");
// 创建一个文件字节输出流,用于将读取的数据写入target 目录下的文件中
OutputStream out = new FileOutputStream("D:/two/example.txt");
int len; // 定义一个int 类型的变量len,记住每次读取的一个字节
long begintime = System.currentTimeMillis(); // 获取拷贝文件前的系统时间
while ((len = in.read()) != -1) { // 读取一个字节并判断是否读到文件末尾
out.write(len); // 将读到的字节写入文件
}
long endtime = System.currentTimeMillis(); // 获取文件拷贝结束时的系统时间
System.out.println("拷贝文件所消耗的时间是: " + (endtime - begintime) + "毫秒");
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:拷贝文件所消耗的时间是: 2毫秒
在拷贝过程中,通过while循环将字节逐个进行拷贝。每循环一次,就通过FileInputStream 的read()方法读取一个字节,并通过FileOutputStream 的write()方法将该字节写入指定文件,循环往复,直到len的值为-1,表示读取到了文件的末尾,结束循环,完成文件的拷贝。程序运行结束后,会在命令行窗口打印拷贝文件所消耗的时间。