写入 OSX 的 /Library/Application 支持文件夹抛出 IOException:权限被拒绝
Writing to OSX's /Library/Application Support folder throws IOException: Permission denied
我正在尝试将我的应用数据存储到 /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:抛出权限被拒绝。
让我们开始...
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
的 read/write 权限,filename.txt
是一个目录,因此任何将其视为文件的尝试都会失败。
然而,
File file = new File("/Library/Application Support/filename.txt");
应该是……
File file = new File(System.getProperty("user.home") + "/Library/Application Support/filename.txt");
这样您将写入当前用户主目录,您更有可能拥有 read/write 权限。
此外,您的 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
到 read/write 东西(因为它现在指向 System.getProperty("user.home") + "/Library/Application Support/Your Application Directory"
中的 filename.txt
)
我正在尝试将我的应用数据存储到 /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:抛出权限被拒绝。
让我们开始...
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
的 read/write 权限,filename.txt
是一个目录,因此任何将其视为文件的尝试都会失败。
然而,
File file = new File("/Library/Application Support/filename.txt");
应该是……
File file = new File(System.getProperty("user.home") + "/Library/Application Support/filename.txt");
这样您将写入当前用户主目录,您更有可能拥有 read/write 权限。
此外,您的 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
到 read/write 东西(因为它现在指向 System.getProperty("user.home") + "/Library/Application Support/Your Application Directory"
中的 filename.txt
)