【问题标题】:FileNotFound exception when trying to write to a file尝试写入文件时出现 FileNotFound 异常
【发布时间】:2011-02-02 05:47:55
【问题描述】:

好的,我觉得这应该很容易,但显然缺少用 Java 编写文件的基本内容。我有这个:

File someFile = new File("someDirA/someDirB/someDirC/filename.txt");

我只想写入文件。然而,虽然 someDirA 存在,但 someDirB(因此 someDirC 和 filename.txt)不存在。这样做:

BufferedWriter writer = new BufferedWriter(new FileWriter(someFile));

抛出FileNotFoundException。嗯,呃,不开玩笑。毕竟我正在尝试创建它。在实例化 FileWriter 对象之前,是否需要将文件路径分解为组件、创建目录并创建文件?

【问题讨论】:

    标签: java file exception filenotfoundexception


    【解决方案1】:

    您必须先创建所有前面的目录。 here 是怎么做的。您需要创建一个File 对象来表示您想要存在的路径,然后在其上调用.mkdirs()。然后确保你 create 新文件。

    final File parent = new File("someDirA/someDirB/someDirC/");
    if (!parent.mkdirs())
    {
       System.err.println("Could not create parent directories ");
    }
    final File someFile = new File(parent, "filename.txt");
    someFile.createNewFile();
    

    【讨论】:

    • 谢谢,但上面有一些与事实无关的内容。首先,您可以在现有目录上调用 mkdirs() ,它只会返回 false 而不是抛出异常。此外,就我而言,一旦创建了目录,我可以跳过 createNewFile() 步骤并直接进入 FileWriter 步骤。
    • createNewFile() 是多余的,因此不赞成。
    • createNewFile() 是可重复的,但其余代码工作正常。因此赞成。
    【解决方案2】:

    您可以在 Java 中的 File 类上使用“mkdirs”方法。 mkdirs 将创建您的目录,并在必要时创建任何不存在的父目录。

    http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html#mkdirs%28%29

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多