微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我刚刚发现,当通过“Run As …”(从可执行程序的上下文菜单中)作为不同的用户在Windows上启动Java程序时,对System.getenv("APPDATA")的调用将返回null ,而不是通常应用程序数据文件夹。

现在,当我提到Windows文件夹等等时,我是一个小菜鸟,所以我的问题是,当我的程序必须能够将其数据存储在某处以正确工作时,我应该如何处理这种情况? 更具体地说,如果System.getenv("APPDATA")返回null ,我什至允许存储任何数据,如果是的话,在哪里? 提前致谢!

每个线程如何拥有cpu寄存器

从其他进程读写

编写一个Windows程序更新,权限问题

dynamic数据交换(DDE) – 仍然相关?

我可以禁用Dreamweaver的一些function,使其更轻?

好的,我用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 。

是的,你总是被允许存储数据。 您可以使用临时目录来存储数据。 您可以通过System.getProperty("java.io.tmpdir");获取临时目录System.getProperty("java.io.tmpdir"); 。

另外,如果你在Windows中设置一个环境变量,我注意到,直到我重新启动操作系统,Java才捡起它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐