У меня проблема. Я пытаюсь скопировать файл, и я получаю исключение FileNotFound. Вот мой код:java.io.FileNotFoundException при копировании существующего файла через FileUtils
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)
...
Но файл находится в этой папке.
Этот код вызывается из JSF в Tomcat, поэтому, возможно, это проблема точных копий 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 7 или новее, используется 'java.nio.files.Files' [' copy'] (http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files. html # copy-java.nio.file.Path-java.nio.file.Path-java.nio.file.CopyOption ...-) имеют ту же проблему? Обратите внимание, что это работает на 'Path', поэтому вам нужно использовать '' toPath' файла '(http://docs.oracle.com/javase/8/docs/api/java/io/File .html # toPath--), чтобы получить правильный тип объекта. – Powerlord