当前位置: 首页 > 面试题库 >

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

阙沛
2023-03-14
问题内容

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

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并且可以使用OS毫无问题地复制文件。

由于我无法访问计算机,因此这种情况仍在发生,并且无法在我自己的计算机上重现该问题,因此我向您寻求有关此异常原因的提示。


问题答案:

尝试此操作,因为它更需要调整targetPath和filename之间路径中的目录分隔符:

File targetFile = new File(targetPath, filename);


 类似资料: