标签:
采用边读边写的模式,即:一部分一部分读取数据,而后一部分一部分进行内容的保存。 由于此时要拷贝的可能是二进制文件,所以使用字节流操作会更加的合适。
设置源文件,和拷贝文件地址:
代码:
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
以后的文件上传处理都采用此类模式完成。
标签:
原文地址:http://www.cnblogs.com/liyang31/p/5808452.html