[英]Creating a local storage directory in Java desktop app
我正在構建一個Java桌面應用程序,需要存儲一些本地數據(首選項和歷史記錄)。 為此,我想在適當的位置創建一個新文件夾,例如Windows中的AppData \\ myapp和Linux中的〜/ .myapp (以及Mac上預期的任何位置)。
有什么好的,跨平台的方式呢?
我在這個網站上看到了幾個問題,但是要么:
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 PersistenceService
- 甚至可用於沙盒應用程序。 使用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.