java - 写入 OSX's/Library/Application Support 文件夹会抛出 IOException : Permission denied

标签 java macos file permissions writefile

我正在尝试将应用程序的数据存储到/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 的读/写权限,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 = 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 读取/写入内容(因为它现在指向 System.getProperty("user.home"内的 filename.txt ") + "/Library/Application Support/您的应用程序目录")

关于java - 写入 OSX's/Library/Application Support 文件夹会抛出 IOException : Permission denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620482/

相关文章:

c - 使用函数将文本文件读入结构数组

java - 使用放心的 XML 映射

java - 从 JAVA 中的多维 JSON 映射检索数据

cocoa - 通过标识符定位包

java - OS X 上的 SWT : change application name

php - 如何在php中对数组中的目录中的文件进行排序

java - 为什么我听不到127.0.0.1 :port by socket

Java Swing透明无限加载/加载动画闪烁

ios - Mac/iPhone 应用程序 - 将核心数据同步到 iCloud 和设备(使用核心数据)

file - IE6 "helpfully"将后缀附加到下载的文件