java复制文件到指定目录

数据采集过程中,将数据分别采集到了两个电脑中,需要将两个文件放入一个文件夹中,因此,需要写一个复制目标文件到指定文件夹的代码,于是开始了撸代码过程。

开始时候,想偷懒,copy个程序改改就这样吧,于是参考了这篇文章 ,做出了第一版的代码,

package balltest;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataCopy {
	public static void main(String[] args) {
		//for(int i = 20 ; i<=103 ; i++){
		int i = 20;
			String sour = "D:\\数据\\第二次试验湿磨\\" +String.valueOf(i)+"\\";
			String dest = "E:\\湿式球磨机数据采集\\第二次试验\\湿磨\\"+String.valueOf(i)+"\\";;
			copyFile(sour , dest);
		//}
	}

	private static void copyFile(String sour, String dest) {
		File sourFile =new File(sour); 
		String  filename = sourFile.list()[0];
		
		String inputname = sour+filename;
		String outputname = dest+filename;
		
		try{
		FileInputStream input  = new FileInputStream(inputname);
		FileOutputStream output = new FileOutputStream(outputname);
		
		int in  = input.read();
		
		while(in!=-1){
			output.write(in);
			in = input.read();
		}
		
		}catch(IOException e){
			e.printStackTrace();
		}
		
		
	}
}

这显然就是个都出来,然后再写进去,太复杂了,当时只测试了一个文件180m居然5分钟没有完,于是想到了linux中的cp命令,要是windows可以写shell就好了,突然想到DOC也有copy命令,可以试试,于是就有了下图:


最后使用Runtime.getRuntime()来处理这些命令,最终程序如下:
package balltest;

import java.io.File;

public class DataCopyCmd {
	public static void main(String[] args) {
		for(int i = 20 ; i<=103 ; i++){
					String sour = "D:\\数据\\第二次试验湿磨\\" +String.valueOf(i)+"\\";
					String dest = "E:\\湿式球磨机数据采集\\第二次试验\\湿磨\\"+String.valueOf(i)+"\\";;
					copyFile(sour , dest);
				}
	}

	private static void copyFile(String sour, String dest) {
		//获取进程
		Runtime run = Runtime.getRuntime();
		Process p = null;
		//得到目标文件名
		File sourFile =new File(sour); 
		String  filename = sourFile.list()[0];
		String inputname = sour+filename;
		String command = "cmd /c copy  "+inputname+"  "+dest;
		System.out.println(command);
		//执行doc命令
		try {
			p = run.exec(command);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}





效果不错,15Gd数据秒完



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值