在Windows XP上的APPDATA文件夹中创建文件夹(文件夹是只读的)

时间:2012-11-06 11:07:03

标签: java appdata

在我的Java应用程序中,我找到了APPDATA文件夹,然后尝试创建自己的子文件夹:

    if (System.getProperty("os.name").startsWith("Windows")) { 
        settingsDir = System.getenv("APPDATA") + "\\MyApp\\";

        if (!(new File(settingsDir)).isDirectory()) {
            if (!(new File(settingsDir)).getParentFile().mkdirs()) {
                Error("Failed to create directory " + settingsDir);
            }
        }
    }

在Windows XP上,此操作失败,说无法创建该文件夹。

隐藏的Application Data文件夹是只读的,显然无法更改。

这可能是创建新文件夹失败的原因吗?如果是这样,从Java开始在APPDATA文件夹中创建新文件夹的典型方法是什么?

1 个答案:

答案 0 :(得分:1)

哎呀,这似乎是我自己的代码中的一个错误。我在代码中有一个遗留getParentFile()。正确的版本是:

if (System.getProperty("os.name").startsWith("Windows")) { 
    settingsDir = System.getenv("APPDATA") + "\\MyApp\\";

    if (!(new File(settingsDir)).isDirectory()) {
        if (!(new File(settingsDir)).mkdirs()) {
            Error("Failed to create directory " + settingsDir);
        }
    }
}

我在APPDATA文件夹的 parent 文件夹中创建了一个文件夹。这是不允许的。

显然,虽然APPDATA文件夹的属性说“只读”,但允许在此目录中创建文件和文件夹。

我的不好,对不起噪音。我将把这个主题留给档案馆。