java.io.FileNotFoundException 通过 FileUtils 复制现有文件时
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 在复制完成后完成。
此外,在另一个相同的方法中 class 此代码完美运行:
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 是 "smart",因此 Process Builder 在单独的线程(甚至进程)中运行,为了解决我的问题,我必须更改
ProcessBuilder pb = ...
pb.start()
到
ProcessBuilder pb = ...
Process p = pb.start()
p.waitFor()
我有问题。我尝试复制文件,但出现 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 在复制完成后完成。
此外,在另一个相同的方法中 class 此代码完美运行:
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 是 "smart",因此 Process Builder 在单独的线程(甚至进程)中运行,为了解决我的问题,我必须更改
ProcessBuilder pb = ...
pb.start()
到
ProcessBuilder pb = ...
Process p = pb.start()
p.waitFor()