/*** 需求:* 把“C:\Program Files (x86)\Dev-Cpp”复制到 F盘目录下*/import java.io.*;public class CopyFoldersDemo {public static void main(String[] args) throws IOException {long start=System.currentTimeMillis();//1:创建数据源File对象,路径是C:\Program Files (x86)\Dev-CppFile srcFile = new File("C:\\Program Files (x86)\\Dev-Cpp");//2:创建目的地File对象,路径是F:\\File destFile = new File("F:\\");//3:写方法实现文件夹的复制,参数为数据源File对象和目的地File对象CopyFolders(srcFile, destFile);long end=System.currentTimeMillis();System.out.println("花费"+(end-start)+"毫秒");}//此方法实现文件夹的复制,参数为数据源File对象和目的地File对象private static void CopyFolders(File srcFile, File destFile) throws IOException {if (srcFile.isDirectory()) {
// 是:// A:在目的地下创建和数据源File名称一样的目录String srcFileName = srcFile.getName();File newFolder = new File(destFile, srcFileName);if (!newFolder.exists()) {newFolder.mkdir();}// B:获取数据源File下所有文件或者目录的File数组File[] fileArray = srcFile.listFiles();// C:遍历该File数组,得到每一个File对象for (File file : fileArray) {//D:把该File作为数据源File对象,递归调用复制文件夹的方法CopyFolders(file, newFolder);}}else {//不是目录文件,直接调用字节流方法复制File newFile=new File(destFile,srcFile.getName());CopyFile(srcFile,newFile);}}private static void CopyFile(File srcFile, File destFile) throws IOException {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));byte[] bys = new byte[1024];int len;while ((len = bis.read(bys)) != -1) {bos.write(bys, 0, len);}bis.close();bos.close();}
}