gpt4 book ai didi

java - 使用 java.nio 移动文件时出现问题

转载 作者:行者123 更新时间:2023-12-01 22:19:00 25 4
gpt4 key购买 nike

在重命名文件后尝试移动文件时遇到异常,问题是它是间歇性发生的,即有时代码可以工作,有时则不能并且不可复制,如果任何人都可以提供相同的见解,将会很有帮助

Caused by: java.nio.file.AccessDeniedException: /data/Inprocess/DEMO.20191026.csv -> /data/Inprocess/DEMO.20191026.csv.inprogress
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:457)
at sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:262)
at java.nio.file.Files.move(Files.java:1395)

Path fromPath = inputFile.toPath();
Path toPath = new File(inputFile.getAbsolutePath() + ".inprogress").toPath();
LOGGER.info("Moving file to Path: " + inputFile.getAbsolutePath() + ".inprogress");
try {
Files.move(fromPath, fromPath.resolveSibling(toPath),StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
// Handle Exception
throw new TradeProcessorException("Error while marking file Inprogress: ", e);
}

最佳答案

旧的File(纯磁盘文件/目录)和更新、更强大的Path之间的一个区别是,后者维护其"file"系统(可以是 zip、ram 磁盘、远程磁盘)。因此,一旦使用 Path,就继续使用它。

Path fromPath = inputFile.toPath();
String toName = inputFile.getFileName().toString() + ".inprogress";
Path toPath = inputFile.resolveSibling(toName);

LOGGER.info("Moving file to Path: " + toPath);
try {
Files.move(fromPath, toPath, StandardCopyOption.REPLACE_EXISTING);

您对resolveSibling的使用似乎添加了完整路径。

(上面多余的 .toString() 只是提醒 getFileName() 返回一个 Path。)

关于java - 使用 java.nio 移动文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606183/

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