簡體   English   中英

需要使用 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 中 go)

如果您想使用純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 的可能性。

Apache commons-io 庫有一個 FileUtils.copyDirectory FileUtils.copyDirectory()方法。 它將源目錄及其子文件夾中的所有文件復制到目標目錄,必要時創建目標目錄。

FileUtils 文檔

如果您使用的是 Gradle,請將其添加到您的依賴項部分以將此庫添加到您的項目中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM