簡體   English   中英

在Java桌面應用程序中創建本地存儲目錄

[英]Creating a local storage directory in Java desktop app

我正在構建一個Java桌面應用程序,需要存儲一些本地數據(首選項和歷史記錄)。 為此,我想在適當的位置創建一個新文件夾,例如Windows中的AppData \\ myapp和Linux中的〜/ .myapp (以及Mac上預期的任何位置)。

有什么好的,跨平台的方式呢?


我在這個網站上看到了幾個問題,但是要么:

  • 提問者希望找到Windows的應用程序數據 (不是跨平台)
  • 解決方案是在user.home創建一個文件夾(Linux風格,而不是跨平台)這是我目前所做的,但我正在尋求改進。

您始終可以使用Java Preferences API來存儲每個用戶的信息,您不必擔心實現。 不同的實現可用於不同的平台,但對您(客戶端)隱藏。

另一種方法是使用Apache Commons Configuration API,它更復雜,但為您提供了更多功能。

import java.io.File;

public class AppPathFolder {

    public static void main(String[] args) {
        String path = null;
        String osName = System.getProperty("os.name").toLowerCase();
        if (osName.indexOf("windows")>-1) {
            path = System.getenv("APPDATA");
        } else if (osName.indexOf("mac")>-1) {
            // get the env. variable for Mac..
            path = System.getenv("?");
            // etc. for Linux, Unix, Solaris..
        } else { //anything else
            path = System.getProperty("user.home");
        }
        File rootOfPath = new File(path);
        // create a sub-directory based on package name of main class..
        // perhaps prefixed with with java/appdata
        System.out.println(rootOfPath);
    }
}

當然,還有其他少量數據選項:

  • 應用。 受信任或沒有安全管理器的人可能會使用Preferences API
  • 桌面應用。 使用Java Web Start啟動可以訪問JNLP API,它提供了PersistenceService - 甚至可用於沙盒應用程序。
  • 小程序可以存儲cookie。

使用user.home系統屬性。 像這樣:

String userHomePath = System.getProperty("user.home");
File myAwesomeFolder = new File(useHomePath, "myAweSomeApp");
myAwesomeFolder.mkdirs();

如何將app-folder存儲到用戶主目錄中? 您可以按System.getProperty(“user.home”)獲取它,請參閱http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

沒有確認Linux,但你也可以進入Windows注冊表。

無論哪種方式,

String path = System.getProperty("user.home")+ "\\AppLication Data"+"\\xyzFolder";

這適用於Windows 7,因為%appData%顯示上面的遺留路徑。

暫無
暫無

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

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