繁体   English   中英

通过FileUtils复制现有文件时出现java.io.FileNotFoundException

[英]java.io.FileNotFoundException when copying existing file via FileUtils

我有个问题。 我尝试复制文件,但出现FileNotFound异常。 这是我的代码:

File file = new File("C:\\.DS\\tmp\\client-" + node_id + ".war");
File dir = new File("D:\\Utils\\Apache\\Tomcat\\webapps");
try {
    FileUtils.copyFileToDirectory(file, dir);
} catch (Exception e) {
    e.printStackTrace();
}

唯一的例外是:

java.io.FileNotFoundException: Source 'C:\.DS\tmp\client-022.war' does not exist
    at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1074)
    at org.apache.commons.io.FileUtils.copyFileToDirectory(FileUtils.java:1013)
    ...

但是文件在该文件夹中。

这段代码是从Tomcat中的JSF调用的,因此这可能是Tomcat目录的问题。 该文件是使用ProcessBuilder通过外部命令在以前的函数中生成的,因此,也许Java尝试并行执行,并且在复制完成后,ProcessBuilder正在完成。

此外,在同一类的另一种方法中,此代码可以完美地工作:

File file = new File("C:\\.DS\\tmp\\client-" + node_id + ".properties");
File dir = new File("C:\\.DS\\ss\\engines");
try {
    FileUtils.copyFileToDirectory(file, dir);
    ...

我发现Java是“智能”的,因此Process Builder在单独的线程(甚至进程)中运行,并且要解决我的问题,我必须更改

ProcessBuilder pb = ...
pb.start()

ProcessBuilder pb = ...
Process p = pb.start()
p.waitFor()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM