0

私の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では、これは失敗し、フォルダを作成できなかったと言います。

非表示のアプリケーションデータフォルダは読み取り専用であり、これは変更できないようです。

これが、新しいフォルダの作成が失敗する理由でしょうか?もしそうなら、JavaからAPPDATAフォルダに新しいフォルダを作成する一般的な方法は何でしょうか?

4

1 に答える 1

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フォルダーのフォルダーにフォルダーを作成していました。これは許可されませんでした。

どうやら、APPDATA フォルダのプロパティは「読み取り専用」と表示されていますが、このディレクトリにファイルとフォルダを作成することは許可されているようです。

うるさくてすみません。このトピックはアーカイブのためにここに残します。

于 2012-11-06T14:34:18.180 に答える