微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐