gpt4 book ai didi

java - 使用 Java NIO 将文件从一个目录移动到另一个目录

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:58 24 4
gpt4 key购买 nike

我正在使用 NIO 库,但是当我尝试将文件从一个目录移动到另一个目录时出现奇怪的错误。

String yearNow = new SimpleDateFormat("yyyy").format(
Calendar.getInstance().getTime());

try {
DirectoryStream<Path> curYearStream =
Files.newDirectoryStream(sourceDir, "{" + yearNow + "*}");
//Glob for current year

Path newDir = Paths.get(sourceDir + "//" + yearNow);

if (!Files.exists(newDir) || !Files.isDirectory(newDir)) {
Files.createDirectory(newDir);
//create 2014 directory if it doesn't exist
}
}

迭代以“2014”开头的元素并将它们移动到新目录(newDir,也称为2014)

for (Path p : curYearStream) {
System.out.println(p); //it prints out exactly the files that I need to move
Files.move(p, newDir); //java.nio.file.FileAlreadyExistsException
}

我收到 java.nio.file.FileAlreadyExistsException,因为我的文件夹 (2014) 已经存在。我真正想做的是将所有以“2014”开头的文件移到 2014 目录中。

最佳答案

最好不要回到 java.io.File 而是使用 NIO:

    Path sourceDir = Paths.get("c:\\source");
Path destinationDir = Paths.get("c:\\dest");

try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(sourceDir)) {
for (Path path : directoryStream) {
System.out.println("copying " + path.toString());
Path d2 = destinationDir.resolve(path.getFileName());
System.out.println("destination File=" + d2);
Files.move(path, d2, REPLACE_EXISTING);
}
} catch (IOException ex) {
ex.printStackTrace();
}

关于java - 使用 Java NIO 将文件从一个目录移动到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22356585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com