原文: https://howtodoinjava.com/java/io/how-to-copy-directories-in-java/
要将目录及其包含的所有子文件夹和文件从一个位置复制到另一个位置,请使用以下代码,该代码使用递归遍历目录结构,然后使用Files.copy()函数复制文件。
目录复制示例源代码
在此示例中,我将c:\temp下的所有子目录和文件复制到新位置c:\tempNew。
package com.howtodoinjava.examples.io;import java.io.File;import java.io.IOException;import java.nio.file.Files;import java.nio.file.StandardCopyOption;public class DirectoryCopyExample{public static void main(String[] args) throws IOException{//Source directory which you want to copy to new locationFile sourceFolder = new File("c:\\temp");//Target directory where files should be copiedFile destinationFolder = new File("c:\\tempNew");//Call Copy functioncopyFolder(sourceFolder, destinationFolder);}/*** This function recursively copy all the sub folder and files from sourceFolder to destinationFolder* */private static void copyFolder(File sourceFolder, File destinationFolder) throws IOException{//Check if sourceFolder is a directory or file//If sourceFolder is file; then copy the file directly to new locationif (sourceFolder.isDirectory()){//Verify if destinationFolder is already present; If not then create itif (!destinationFolder.exists()){destinationFolder.mkdir();System.out.println("Directory created :: " + destinationFolder);}//Get all files from source directoryString files[] = sourceFolder.list();//Iterate over all files and copy them to destinationFolder one by onefor (String file : files){File srcFile = new File(sourceFolder, file);File destFile = new File(destinationFolder, file);//Recursive function callcopyFolder(srcFile, destFile);}}else{//Copy the file content from one place to anotherFiles.copy(sourceFolder.toPath(), destinationFolder.toPath(), StandardCopyOption.REPLACE_EXISTING);System.out.println("File copied :: " + destinationFolder);}}}Output:Directory created :: c:\tempNewFile copied :: c:\tempNew\testcopied.txtFile copied :: c:\tempNew\testoriginal.txtFile copied :: c:\tempNew\testOut.txt
使用Files.copy()方法,可以复制目录。 但是,目录内的文件不会被复制,因此即使原始目录包含文件,新目录也为空。
另外,如果目标文件存在,则复制将失败,除非指定了REPLACE_EXISTING选项。
验证是否正确复制了文件。 随意修改代码并以自己喜欢的方式使用它。
祝您学习愉快!
