创建和写入文件

时间:2014-06-30 03:51:11

标签: java file

if (!file.exists())
  file.mkdirs();
  file.createNewFile();

该错误表明我在实际上“写”Go Falcons到文件时遇到问题,它会说文件访问被拒绝,这是否意味着我的代码出错了?

错误状态:FileNotFoundException 访问被拒绝

PS:一旦它可写,我怎么才能真正读取这个文件?

4 个答案:

答案 0 :(得分:1)

变化:

if (!file.exists())
  file.mkdirs();
  file.createNewFile();

要:

if (!file.exists()) {
  file.createNewFile();
}

但首先,请阅读一些教程或文章。你为什么要延长Exception

答案 1 :(得分:1)

如果我理解你的问题,一种方法是使用PrintWriter

public static void main(String[] args) {
  File outFile = new File(System.getenv("HOME") // <-- or "C:/" for Windows.
      + "/hello.txt");
  try {
    PrintWriter pw = new PrintWriter(outFile);
    pw.println("Go Falcons");
    pw.close();
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  }
}

在我的主文件夹中创建名为“hello.txt”的单行ascii文件。

$ cat hello.txt
Go Falcons

答案 2 :(得分:1)

问题在于,在您尝试创建输出文件之前,首先要创建一个具有相同名称的目录:

            if (!file.exists())
                file.mkdirs();      // creates a new directory
            file.createNewFile();   // fails to create a new file

一旦您已经创建了目录,就无法再创建该文件了,当然,您无法打开目录并将数据写入其中,就像它是一个文件一样,因此您会收到拒绝访问的错误

只需删除file.mkdirs();行,您的代码即可正常使用:

        if (!file.exists())
            file.createNewFile();   // creates a new file

答案 3 :(得分:0)

您可以使用路径的子字符串直到文件夹结构(不包括文件名),并使用方法 mkdirs()创建目录。然后使用 createNewFile()方法创建文件。之后写入新创建的文件。不要忘记处理异常。