相关文章推荐
苦恼的跑步机  ·  如何用js将日期转换成时间戳_日期转时间戳- ...·  1 年前    · 
考研的绿豆  ·  CORS 错误 - HTTP | MDN·  1 年前    · 
小眼睛的火车  ·  树莓派与PLC通信_树莓派与plc通讯_ts ...·  2 年前    · 
坚强的玉米  ·  NumPy 高级索引 | 菜鸟教程·  2 年前    · 
无邪的单杠  ·  复盘模版(2023年月日) - 简书·  2 年前    · 
Code  ›  java.io.IOException 的可能原因是什么:“文件名、目录名或卷标语法不正确” -
https://segmentfault.com/q/1010000042885985
沉稳的火车
1 年前
segmentfault segmentfault
注册登录
问答 博客 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. Stack Overflow 翻译
  4. 问答详情

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

社区维基
1
发布于
2022-11-24
新手上路,请多包涵

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

 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 具有写入权限,并且可以使用操作系统毫无问题地复制文件。

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

原文由 Turismo 发布,翻译遵循 CC BY-SA 4.0 许可协议

Stack Overflow 翻译 java exception file-io
阅读 598
2 个回答
得票 最新
社区维基
1
发布于
2022-11-24
✓ 已被采纳

试试这个,因为它更注意调整 targetPath 和文件名之间路径中的目录分隔符:

 File targetFile = new File(targetPath, filename);

原文由 Alexander 发布,翻译遵循 CC BY-SA 2.5 许可协议

 
推荐文章
苦恼的跑步机  ·  如何用js将日期转换成时间戳_日期转时间戳-CSDN博客
1 年前
考研的绿豆  ·  CORS 错误 - HTTP | MDN
1 年前
小眼睛的火车  ·  树莓派与PLC通信_树莓派与plc通讯_tsingxia的博客-CSDN博客
2 年前
坚强的玉米  ·  NumPy 高级索引 | 菜鸟教程
2 年前
无邪的单杠  ·  复盘模版(2023年月日) - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号