我正在尝试将我的应用数据存储到/ Library / Application Support / myAppFolder。
我正在尝试使用此代码(通过调试)
String content = "This is the content to write into file";
File file = new File("/Library/Application Support/filename.txt");
// if file doesnt exists, then create it
if (!file.exists()) {
file.mkdir();
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
System.out.println("Done");
但java.io.IOException:抛出Permission denied。
答案 0 :(得分:1)
让我们从...开始
if (!file.exists()) {
file.mkdir();
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
您创建了一个名为/Library/Application Support/filename.txt
的目录,然后尝试创建一个名为/Library/Application Support/filename.txt
的文件,然后尝试读取所述文件......这是一个目录......
我们暂时假设您实际拥有/Library/Application Support
的读/写权限,filename.txt
是一个目录,因此任何将其视为文件的尝试都将失败。
然而,
File file = new File("/Library/Application Support/filename.txt");
应该是......
File file = new File(System.getProperty("user.home") + "/Library/Application Support/filename.txt");
这样您就可以写入当前用户的主目录,而您更有可能拥有读/写权限。
此外,您的file
应该指向您的应用程序目录(而不是文件)
File file = new File(System.getProperty("user.home") + "/Library/Application Support/Your Application Directory");
然后你可以使用更像......
的东西if (file.exists() || file.mkdir()) {
file = new File(file, "filename.txt");
file.createNewFile();
}
现在您可以使用file
来读取/写入内容(因为它现在指向filename.txt
内的System.getProperty("user.home") + "/Library/Application Support/Your Application Directory"
)