当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《java.io.IOException的可能原因是什么:"文件名,目录名称或卷标语法不正确"》经验,为你挑选了3个好方法。

我正在尝试使用以下代码复制文件:

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, 0, 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并且可以使用操作系统轻松复制文件.

因为我无法访问机器,但这种情况发生了,并且无法在我自己的机器上重现问题.我转向您提供有关此异常原因的提示.



1> Adam Hughes..:

仅供参考,然后我得到的文件名带有冒号的时间戳,即myfile_HH:mm:ss.csv 删除冒号解决了该问题。



2> Alexander..:

试试这个,因为更需要调整targetPath和filename之间路径中的目录分隔符:

File targetFile = new File(targetPath, filename);



3> 小智..:

我刚遇到同样的问题.我认为这与写访问权限有关.我在尝试写入c:\时遇到错误,但在更改为D:\时一切正常.显然Java没有权限写入我的系统驱动器(运行安装在C上的Windows 7 :)

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有