package com.hasonger.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class UPanAutoCopy {
public static void main(String[] args) {
copy(getUPanRootDir(), "E:/U盘拷贝");
System.out.println("备份数据成功!");
}
/**
* 获取U盘根路径
*/
public static File getUPanRootDir() {
File[] files = File.listRoots();
File[] filesPlus = null;
while (true) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
filesPlus = File.listRoots();
if (filesPlus.length > files.length) {
System.out.println("发现新U盘:" + filesPlus[filesPlus.length - 1].getAbsolutePath());
break;
}
}
System.out.println("开始拷贝数据,请等待。。。。。。。。。。。");
return filesPlus[filesPlus.length - 1];
}
/**
* 将U盘所有数据拷贝到磁盘saveDirectory路径
*/
public static void copy(File uPanRootDir, String saveDirectory) {
if(uPanRootDir.isFile()) {
FileInputStream in = null;
FileOutputStream out = null;
try {
try {
in = new FileInputStream(uPanRootDir);
//数据拷贝目的地绝对路径
File dest = new File(saveDirectory, uPanRootDir.getAbsolutePath().substring(3));
//创建数据拷贝目的地的父路径
new File(dest.getParent()).mkdirs();
out = new FileOutputStream(dest);
int len = 0;
//一次缓冲读取5M数据
byte[] b = new byte[1024*1024*5];
while((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
out.flush();
System.out.println(dest.getAbsolutePath());
} finally {
if(in != null) {
in.close();
}
if(out != null) {
out.close();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else if (uPanRootDir.isDirectory()){
File[] files = uPanRootDir.listFiles();
if(files == null) {
return;
}
for (File file : files) {
copy(file, saveDirectory);
}
}
}
}
转载于:https://my.oschina.net/hasonger/blog/213035