Java - file.createNewFile() 抛出 IOException "No such file or directory" 错误

5
在编写Java代码时遇到了这个问题:file.createNewFile() 抛出 IOException "No such file or directory"。查看了其他答案,但都没有什么帮助。有什么建议吗?

5
需要正确回答这个问题,需要提供出现此错误的示例代码及堆栈跟踪信息。 - EpicPandaForce
你的文件路径可能是错误的。 - Sunny
是的,伙计们,让我们都减去那个未解决的问题。我认为这是一个供大家寻找解决方案而不是竞争的问题和答案网站。 - Mugi4ok
4个回答

13

很可能您正在尝试在不存在的目录中创建文件。

首先使用mkdirs()创建任何缺失的父文件夹。

File file = new File("foo/bar.txt")
file.getParentFile().mkdirs();
file.createNewFile();

2
我遇到了跟楼主一样的问题,而mkdirs()函数正是解决这个问题所缺少的组件。谢谢。 - Keno

2

我认为您正在尝试在不存在的目录中创建新文件。整个路径需要存在,只有文件可以不存在。


当然存在,我不是那么蠢 =) 我意识到问题所在并在下面发布了答案。谢谢帮助 =) - Mugi4ok
请将您自己的答案标记为推荐答案 :). - Juru

2

哦,我明白了。这似乎更像是Windows的问题而不是Java的问题。实际上,即使禁用用户账户控制(UAC),某些随机应用程序仍然没有权限在C盘(或者你系统中的任何其他盘)上写入文件。虽然在Win7中从未遇到过此问题。在IDE上使用“以管理员身份运行”也无济于事,因为它并没有将这些权限授予Java编译器。所以,我只是将我的项目文件夹移动到了其他磁盘。当然,你也可以更改访问权限,但对我来说更简单。是的,在其他问题中没有人提到过类似问题的发生,所以我希望这对任何人都有所帮助。


1

首先您需要创建文件夹。createNewFile无法创建文件夹:

File folderFile = new File("c:\\this\\folder\\has\\subfolders");
folderFile.mkdirs();

File myFile = new File(folderFile,"myfile.txt");
myFile.createNewFile();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接