if (!file.exists())
file.mkdirs();
file.createNewFile();
该错误表明我在实际上“写”Go Falcons到文件时遇到问题,它会说文件访问被拒绝,这是否意味着我的代码出错了?
错误状态:FileNotFoundException 访问被拒绝
PS:一旦它可写,我怎么才能真正读取这个文件?
答案 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()方法创建文件。之后写入新创建的文件。不要忘记处理异常。