在我的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文件夹中创建新文件夹的典型方法是什么?
答案 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文件夹的属性说“只读”,但允许在此目录中创建文件和文件夹。
我的不好,对不起噪音。我将把这个主题留给档案馆。