我试图使用以下代码复制一个文件:
File targetFile = new File(targetPath + File.separator + filename); ... targetFile.createNewFile(); fileInputStream = new FileInputStream(fileToCopy); fileOutputStream = new FileOutputStream(targetFile); byte[] buffer = new byte[64*1024]; int i = 0; while((i = fileInputStream.read(buffer)) != -1) { fileOutputStream.write(buffer,i); }
对于某些用户,targetFile.createNewFile导致此异常:
java.io.IOException: The filename,directory name,or volume label Syntax is incorrect at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:850)
文件名和目录名称似乎是正确的.在执行复制代码之前,目录targetPath甚至被检查存在,并且文件名如下所示:AB_timestamp.xml
用户对targetPath具有写入权限,可以使用操作系统复制文件而不会出现问题.
由于我无法访问机器,所以发生这种情况,并且无法在自己的机器上重现问题,我转向您提示此异常的原因.
解决方法
尝试这样做,因为在目标路径和文件名之间的路径中更需要调整目录分隔符:
File targetFile = new File(targetPath,filename);