学科分类
目录
Java基础

文件的拷贝

在应用程序中,I/O流通常都是成对出现的,即输入流和输出流一起使用。例如文件的拷贝就需要通过输入流来读取源文件中的数据,并通过输出流将数据写入新文件。接下来通过一个案例来演示如何进行文件内容的拷贝。

首先在当前项目目录下创建文件夹source和target(右击项目名称)→【New】→【Folder】),然后在source文件夹中存放一个名称为“src.jpg”的图片文件,拷贝文件的代码如文件1所示。

文件1 Example04.java

 1    import java.io.*;
 2    public class Example04 {
 3        public static void main(String[] args) throws Exception {
 4            // 创建文件输入流对象读取指定目录下的文件
 5            FileInputStream in = new FileInputStream("source/src.jpg");
 6            // 创建文件输出流对象将读取到的文件内容写入到指定目录的文件中
 7            FileOutputStream out = new FileOutputStream("target/dest.jpg");
 8            // 定义一个int类型的变量len
 9            int len = 0;
 10            // 获取拷贝文件前的系统时间
 11            long beginTime = System.currentTimeMillis();
 12            // 通过循环将读取到的文件字节信息写入到新文件
 13            while ((len = in.read()) != -1) {            
 14                out.write(len);
 15            }
 16            // 获取拷贝之后的系统时间
 17            long endTime = System.currentTimeMillis();
 18            // 输出拷贝花费时间
 19            System.out.println("花费时间为:"+(endTime-beginTime) +"毫秒");
 20            // 关闭流
 21            in.close();
 22            out.close();
 23        }
 24    }

程序运行结束后,刷新并打开target文件夹,发现source文件夹中的“src.jpg”文件被成功拷贝到了target文件夹并进行了重命名,如图1所示。

图1 拷贝前后的文件

文件1中,实现了图片文件的拷贝。在拷贝过程中,通过while循环将字节逐个进行拷贝。每循环一次,就通过FileInputStream的read()方法读取一个字节,并通过FileOutputStream的write()方法将该字节写入指定文件,循环往复,直到读取的长度len的值为-1,表示读取到了文件的末尾,结束循环,完成文件的拷贝。

程序运行结束后,会在命令行窗口打印拷贝图片文件所消耗的时间,如图2所示。

图2 运行结果

从图2可以看出,程序拷贝图片文件共消耗了2755毫秒。在拷贝文件时,由于计算机性能等各方面原因,会导致拷贝文件所消耗的时间不确定,因此每次运行程序的结果并不一定相同。

点击此处
隐藏目录