[英]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.