文件拷贝代码模型

采用边读边写的模式,即:一部分一部分读取数据,而后一部分一部分进行内容的保存。 由于此时要拷贝的可能是二进制文件,所以使用字节流操作会更加的合适。

设置源文件,和拷贝文件地址:

代码:

 1 package cn.demo;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.InputStream;
 6 import java.io.OutputStream;
 7 import java.io.FileOutputStream;
 8 public class Test {
 9     public static void main(String[] args) throws Exception {
10         if(args.length != 2){
11             System.out.println("对不起,执行错误");
12             System.exit(1);
13         }
14         System.out.println("源路径"+ args[0]);
15         System.out.println("源路径"+ args[1]);
16         File inFile = new File(args[0]);//定义源文件
17         if (!inFile.exists()){
18             System.out.println("源拷贝文件不存在");
19             System.exit(1);
20         }
21         File outFile = new File(args[1]);
22         copy (inFile,outFile);
23     }
24     public static boolean copy(File intFile,File outFile) throws Exception{
25         InputStream input = null;//实现输入数据
26         OutputStream output = null;//实现输出数据
27         try{
28             long start = System.currentTimeMillis();//考虑目标文件生成问题
29             if(!outFile.getParentFile().exists()){
30                 outFile.getParentFile().mkdir();
31             }
32             byte data[] = new byte [2048];
33             input = new FileInputStream(intFile);
34             output = new FileOutputStream(outFile);
35             int temp =0;             //保存没次读取进来的数据
36             while((temp = input.read(data)) != -1){
37                 output.write(data,0,temp);
38             }
39             long end =System.currentTimeMillis();
40             System.out.println("花费时间:" + (end-start));
41             return true;
42         }catch(Exception e){
43             throw e;
44         }finally{
45             if(input != null){
46                 input.close();
47             }
48             if(output != null){
49                 output.close();
50             }
51         }
52     }
53 }

结果:花费时间:599

以后的文件上传处理都采用此类模式完成。

原文地址:https://www.cnblogs.com/liyang31/p/5808452.html