簡體   English   中英

在linux和macintosh上查找“應用程序數據”的目錄

[英]Find directory for “application data” on linux and macintosh

我有一個基於LWJGL的游戲引擎,要運行它我需要將所需的本機庫放在用戶的計算機上。 在Windows上,我通過以下方式找到Application Data目錄:

System.getenv("APPDATA");

一切都很容易,很好。 我創建一個File對象,必要時調用mkDir,如果文件不在機器上,則寫入文件。

(注意:創建的目錄不應該是臨時文件,因為我希望保存提取的文件以供將來運行。此外,創建此目錄為保存的游戲和其他此類數據提供了一個簡單易用的文件夾。)

但是,如果計算機是Macintosh或Linux,我想做類似的事情,但我不熟悉如何使用這兩個系統,我並沒有真正處於良好的測試位置。 我目前找到目標目錄的方法是這樣的:

private static String defaultDirectory()
{
    String OS = System.getProperty("os.name").toUpperCase();
    if (OS.contains("WIN"))
        return System.getenv("APPDATA");
    else if (OS.contains("MAC"))
        return System.getProperty("user.home") + "/Library/Application "
                + "Support";
    else if (OS.contains("NUX"))
        return System.getProperty("user.home");
    return System.getProperty("user.dir");
}

那么,這是正確的方法嗎? 我正在嘗試訪問Mac上的應用程序支持(我已經知道這相當於Windows上的AppData文件夾)而我正在嘗試在Linux上使用類似的文件夾,但我不確定是否“用戶。家“找到正確的。

這應該工作。 只有一件事:在linux上,最好將設置保存在用戶目錄中的隱藏文件夾中。 所以對於linux,要么把你的文件夾放在$ HOME / .config下,要么用.啟動名字. 讓它隱藏起來。

正如在Linux上已經說明的那樣,您應該/可以將您的數據放在家中的.directory中。

不過我有一個提示:遺憾的是,“APPDATA”並不總能在多個WindowsVersions中找到正確的目錄。 AFAIK唯一知道如何正確知道的方法就是調用名為SHGetFolderPath的msdn函數。

示例: http//github.com/fab1an/appkit/blob/master/src/main/java/org/appkit/osdependant/OSFolders.java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM