需要使用 java 将所有文件从一个文件夹复制到另一个文件夹

Need to copy all files from one folder to another using java

源文件夹 C:\temp
目标文件夹 C:\temp1

temp 有一个文件 (sample.csv)并且 temp1 文件夹是空的

我需要将 sample.csv 复制到 temp1

注意: 我不能在代码中的任何地方指定 sample.csv,因为这个名称是动态的。

Path temp = Files.move(paths.get(src),patha.get(dest)).

仅当我在 dest 目录中提供虚拟文件时才有效。
C:\temp1\dummy.csv(我只想指定 C:\temp1 并且 src 文件夹应该放在 temp1 中)

A​​pache commons-io 库有一个 FileUtils.copyDirectory() 方法。它将源目录及其子文件夹中的所有文件复制到目标目录,必要时创建目标目录。

FileUtils docs

如果您正在使用 Gradle,请将其添加到您的依赖项部分以将此库添加到您的项目中:

implementation 'commons-io:commons-io:2.11.0'

如果您想使用普通 java.nio 将文件从一个目录复制到另一个目录,您可以使用 DirectoryStream.

这里有一些例子:

public static void main(String[] args) throws Exception {
    // define source and destination directories
    Path sourceDir = Paths.get("C:\temp");
    Path destinationDir = Paths.get("C:\temp1");
    
    // check if those paths are valid directories
    if (Files.isDirectory(sourceDir, LinkOption.NOFOLLOW_LINKS)
        && Files.isDirectory(destinationDir, LinkOption.NOFOLLOW_LINKS)) {
        // if they are, stream the content of the source directory
        try (DirectoryStream<Path> ds = Files.newDirectoryStream(sourceDir)) {
            // handle each file in that stream 
            for (Path fso : ds) {
                /* 
                 * copy it to the destination, 
                 * that means resolving the file name to the destination directory
                 */
                Files.move(fso, destinationDir.resolve(fso.getFileName().toString()));
            }
        }
    }
}

您可以添加更多检查,例如检查目录是否可读以及是否实际存在。我只是在这里检查一个目录,以显示 Files class.

的可能性