繁体   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