虽然现在文件的拷贝都用 fileutils开源代码但今天也写写练手FileUtils.copyDirectoryToDirectory(srcDir, destDir);
@Test
public void copy3() {
//FileUtils.copyDirectoryToDirectory(srcDir, destDir);
copy("d:\\a","d:\\b");
System.out.println("ok");
}
/**
*
* @param desrc
* 源目录
* @param src
* 目标目录
*/
public void copy(String desrc, String src) {
File file = new File(desrc);
if (!file.exists()) {
System.out.println("目录不存在");
return;
}
if (file.isDirectory()) {
File descfile = new File(src);
if(!descfile.exists()){
descfile.mkdirs();
}
File[] dic = file.listFiles();
if (dic != null && dic.length > 0) {
for (File f : dic) {
// 拷贝
copy(f.getAbsolutePath(), src+File.separator+f.getName());
}
}
} else {
// 拷贝
docopy(file, new File(src));
}
}
public void docopy(File file, File src) {
System.out.println(file.getName()+"===="+file.getAbsolutePath()+"<<<<<");
FileInputStream fin = null;
BufferedInputStream bin = null;
FileOutputStream fou = null;
BufferedOutputStream bou = null;
byte[] b = new byte[1024];
try {
fin = new FileInputStream(file);
bin = new BufferedInputStream(fin);
fou = new FileOutputStream(src);
bou = new BufferedOutputStream(fou);
int i = 0;
while ((i=bin.read(b)) != -1) {
bou.write(b, 0, i);
}
bou.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fin.close();
fou.close();
fou.close();
bou.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}