[英]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()
方法。 它將源目錄及其子文件夾中的所有文件復制到目標目錄,必要時創建目標目錄。
如果您使用的是 Gradle,請將其添加到您的依賴項部分以將此庫添加到您的項目中:
implementation 'commons-io:commons-io:2.11.0'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.