Код: Выделить всё
private void copyFile() {
try {
String data = "C:\\Test_data\\My_Folder\\data";
String destination = "D:\\test\\CC";
File destDir = new File(destination);
File source = new File(data);
File files[] = source.listFiles();
for (File sourceFile : files) {
if (sourceFile.getName().equals("testdata.yaml")) {
if (destDir != null) {
FileUtils.copyFileToDirectory(sourceFile, destDir);
System.out.println("File copied");
}
}
}
} catch (IOException e) {
System.out.println("Error while copying file.......!!!!! ");
e.printStackTrace();
}
}
Копирование файла не работает и выдает следующую ошибку.
Ошибка при копировании файла.......!!!!!java.io.IOException: неверное имя пути
в java.base/java.io.WinNTFileSystem.canonicalize0(собственный метод)
в java.base/java.io.WinNTFileSystem.canonicalize(WinNTFileSystem. java:483)
в java.base/java.io.File.getCanonicalPath(File.java:626)
в org.apache.commons.io.FileUtils.requireCanonicalPathsNotEquals(FileUtils.java:2601)
в org.apache.commons.io.FileUtils.copyFile(FileUtils.java:842)
в org.apache.commons.io.FileUtils.copyFile(FileUtils.java:783)
в org.apache.commons.io.FileUtils.copyFileToDirectory(FileUtils.java:926)
в org.apache.commons.io.FileUtils.copyFileToDirectory(FileUtils.java:897)
в com.fileop .reader.App.addDatamapYamlToProjectLocation(App.java:29)
в com.fileop.reader.App.main(App.java:16)
в java.base/jdk.internal.reflect.NativeMethodAccessorImpl .invoke0(собственный метод) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43)
в java.base/java.lang.reflect.Method.invoke(Method.java:566)
в org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java: 61)
Что я проверил:
На компьютере установлена версия jdk 11
Копирование файлов работает нормально при использовании FileInputStream и FileOutputStream
При попытке копирования с помощью командной строки с помощью команды «копировать» все работает нормально.
Пользователь имеет доступ администратора.
Каталог вывода имеет доступ для чтения и записи.
Я пробовал включить проверку существования файла как на абсолютный, так и на канонический путь. path, существуют оба пути как для источника, так и для назначения.
Размер пути составляет менее 256 символов.
Примечание: С тем же jdk 11 и тем же кодом копирование файлов работает нормально на другом компьютере с помощью FileUtils.copyFileToDirectory(sourceFile, destDir);
Информация о компьютере:
• ОС: Windows
• Тип системы: 64-разрядная
• Версия: Windows 10 Professional Workstation
Ожидания: копирование файла должно происходить без ошибок с использованием FileUtils.copyFileToDirectory(sourceFile, destDir)
Подробнее здесь: https://stackoverflow.com/questions/785 ... -destinati