package demo.io;
import java.io.*;
class 递归拷贝文件 {
public static void main(String[] args) {
File sourceDir = new File("I:\\Test\\2");
File destDir = new File("I:\\Test\\22");
listCopyAll(sourceDir, destDir);
}
private static void listCopyAll(File sourceDir, File destDir) {
destDir.mkdirs();
File[] files = sourceDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
listCopyAll(file, new File(destDir.getAbsolutePath(), file.getName()));
} else {
copyFile(file, new File(destDir.getAbsolutePath(), file.getName()));
}
}
}
private static void copyFile(File file, File newFile) {
BufferedInputStream bufi = null;
BufferedOutputStream bufo = null;
try {
bufi = new BufferedInputStream(new FileInputStream(file));
bufo = new BufferedOutputStream(new FileOutputStream(newFile));
int len = 0;
byte[] buf = new byte[1024];
while ((len = bufi.read(buf)) != -1) {
bufo.write(buf, 0, len);
bufo.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufi != null)
bufi.close();
if (bufo != null)
bufo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}