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();
}
}
我使用 FileUtils (org.apache.commons.io.FileUtils) 库将文件 (FileUtils.copyFileToDirectory(sourceFile, destDir);) 从一个位置复制到另一个位置
文件复制不起作用并出现以下错误。
复制文件时出错......!!!!!! 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 时文件复制工作正常
当尝试使用命令提示符使用“复制”命令进行复制时,它工作正常。
用户具有管理员访问权限。
输出目录具有读写权限。
我尝试过对绝对路径和规范路径进行文件存在检查,源和目标都存在这两个路径。
路径大小小于 256 个字符。
注意:使用相同的 jdk 11 和相同的代码,文件复制在其他计算机上使用 FileUtils.copyFileToDirectory(sourceFile, destDir); 可以正常工作。
电脑详细信息: • 操作系统:Windows
• 系统类型:64 位• 版本:windows 10 专业工作站
期望:使用 FileUtils.copyFileToDirectory(sourceFile, destDir) 进行文件复制应该不会出现任何错误