java.io.IOException可能的原因是什么:“文件名,目录名或卷标语法不正确”

前端之家收集整理的这篇文章主要介绍了java.io.IOException可能的原因是什么:“文件名,目录名或卷标语法不正确”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用以下代码复制一个文件
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);

猜你在找的Java相关文章