【问题标题】:Cannot make file java.io.IOException: No such file or directory [duplicate]无法制作文件java.io.IOException:没有这样的文件或目录[重复]
【发布时间】:2011-11-20 02:33:20
【问题描述】:

我正在尝试在文件系统上创建一个文件,但我不断收到此异常:

java.io.IOException: No such file or directory

我有一个现有目录,我正在尝试将文件写入该目录。

// I have also tried this below, but get same error
// new File(System.getProperty("user.home") + "/.foo/bar/" + fileName);

File f = new File(System.getProperty("user.home") + "/.foo/bar/", fileName);

if (f.exists() && !f.canWrite())
        throw new IOException("Kan ikke skrive til filsystemet " + f.getAbsolutePath());

if (!f.isFile()) {
    f.createNewFile(); // Exception here
} else {
    f.setLastModified(System.currentTimeMillis());
}

获取异常:

java.io.IOException: No such file or directory
  at java.io.UnixFileSystem.createFileExclusively(Native Method)
  at java.io.File.createNewFile(File.java:883)`

我对路径有写权限,但是没有创建文件。

【问题讨论】:

标签: java file ioexception


【解决方案1】:

如果目录../.foo/bar/不存在,则无法在其中创建文件,因此请务必先创建目录。

试试这样的:

File f = new File("somedirname1/somedirname2/somefilename");
if (!f.getParentFile().exists())
    f.getParentFile().mkdirs();
if (!f.exists())
    f.createNewFile();

【讨论】:

  • @Shervin,那么调试是您必须进行的下一步。 :-)
  • 不错,帮了我
【解决方案2】:

打印完整的文件名或在调试器中单步执行。当我对这样的错误感到困惑时,这意味着我的假设和期望与现实不符。确保您可以看到路径是什么;它会帮助你找出哪里出错了。

【讨论】:

  • 无法想象为什么在它被 OP 接受并在评论中确认为正确修复后 5.5 年被否决。感觉很记仇匿名时很容易做到。
  • 这很容易,但是投反对票的人也会失去声誉,所以投反对票不是“免费的”。
  • 我不在乎的地方已经够多了。困扰我的是态度,而不是失去代表。
  • 我在合并两个视频时遇到了同样的问题我正在传递两个视频的路径,我可以在我的日志中看到这些视频的路径与这些视频的路径相同,但它会引发此错误 -java。 io.IOException: 没有这样的文件或目录
  • 我还使用 Bohemian 的回答天气检查了我的视频路径是否存在,是的,它们仍然存在它会引发错误!需要帮助
【解决方案3】:

试试

f.mkdirs() 然后createNewFile()

【讨论】:

【解决方案4】:

File.isFile()如果文件/目录不存在则为false,所以不能用它来测试是否要创建目录。但这不是这里的第一个问题。

问题是中间目录不存在。你想先打电话给f.mkdirs()

【讨论】:

    【解决方案5】:

    您可能想使用Apache Commons IOFileUtils.openOutputStream(File) 方法。当出现问题时,它有很好的异常消息,并且还创建了必要的父目录。如果一切正常,那么您可以直接获得 OutputStream - 非常整洁。

    如果您只想touch 文件,请改用FileUtils.touch(File)

    【讨论】:

      【解决方案6】:

      请注意权限,您可能没有其中的一些权限。您可以在设置 -> 应用程序 -> 应用程序名称 -> 权限 -> 如果没有则处于活动状态。

      【讨论】:

        【解决方案7】:

        我在使用 rest-easy 时遇到了同样的问题。经过搜索,我发现当没有地方保留临时文件时会发生此错误。所以在 tomcat 中你可以创建 tomcat-root/temp 文件夹。

        【讨论】:

          【解决方案8】:

          我通过 linux 文件系统上的这段代码解决了我的问题

          if (!file.exists())
              Files.createFile(file.toPath());
          

          【讨论】:

            猜你喜欢
            • 2017-10-24
            • 2019-12-25
            • 1970-01-01
            • 1970-01-01
            • 2020-04-08
            • 2019-12-23
            • 2021-12-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多