簡體   English   中英

Java:System.getenv(“APPDATA”)返回null,現在是什么?

[英]Java: System.getenv(“APPDATA”) returns null, now what?

我剛剛發現當一個Java程序在Windows上通過“Run As ...”(從可執行文件的上下文菜單)作為另一個用戶啟動時,對System.getenv("APPDATA")的調用將返回null ,而不是通常的應用程序數據文件夾

現在,當涉及到Windows文件夾等時,我有點像菜鳥,所以我的問題是,當我的程序必須能夠將數據存儲在某處以便正常工作時,我應該如何處理這種情況? 更具體地說,如果System.getenv("APPDATA")返回null ,我甚至可以允許存儲任何數據,如果是,那么在哪里? 提前致謝!

好的,我使用JNA解決了自己的問題:

com.sun.jna.platform.win32.Shell32Util.getFolderPath(int nFolder)

其中nFolder = 0x001a表示應用程序數據文件夾, nFolder = 0x001c表示本地應用程序數據文件夾。 在Windows XP上,輸出是

C:\\ Documents and Settings \\ [UserName] \\ Application Data

C:\\ Documents and Settings \\ [UserName] \\ Local Settings \\ Application Data

最重要的是,當程序通過Run As啟動時,這不會返回null

另外,如果你在windows中設置一個環境變量,我注意到在我重新啟動操作系統之前java沒有提取它。

是的,您始終可以存儲數據。 您可以使用臨時目錄來存儲數據。 您可以通過System.getProperty("java.io.tmpdir");獲取臨時目錄System.getProperty("java.io.tmpdir");

暫無
暫無

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

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