2014-01-21 24 views
0

我目前正在写在Java中的外壳更换为Windows,和我的应用程序正在创建一个使用配置文件的好位置? (用户之间共享,每台机器常见)

File userSettings = new File("Gyroscope.properties"); 

但是一个配置文件,如果这是由窗口中运行,当前目录设置为C:\windows\System32\,并且该程序对此目录没有写入权限。

什么是配置文件写入更好的位置?最好将它与jar文件相关,但是我不知道这样做的好方法,而其他堆栈溢出问题对此确切问题有不清楚的解决方案,所以我正在寻找其他位置作为选项。

配置是特定于计算机的,对所有用户都应该是通用的。

+1

如何对用户的主目录? –

+0

如果你希望它相对于罐子,你有没有尝试获取当前的工作目录从代码,然后创建文件相对于该路径? –

+0

是的,这是我如何碰到这个问题,首先,当前的导演一旦它作为一个shell运行,y就会更改为系统根目录。 –

回答

1

使用Preferences类,它会确保将设置写入允许的位置(如用户的家目录或注册表)。

+0

使用Preferences类,配置​​选项到底在哪里?我需要能够记录它的位置,但是这样做的好处在于,它允许我选择不依赖于用户,将其存储在用户主目录中不允许我执行。 –

+0

这取决于平台。在Unix上,它会保存到〜/ .java_profile/ – Kayaman

1

我将介绍一种可能的解决方案。应该有几种方法来实现它。

把你的配置文件放在你的jar旁边。在调用java时,将配置文件显式放入类路径中(例如java -cp .../Gyroscope.jar;.../Gyroscope.properties <your_main_class>)。

现在你可以访问你的属性文件作为资源(ClassLoader.getSystemResourceAsStream(“/ Gyroscope.properties”))。只要你想要的类加载器一旦方便,并为你的实际实现cleam一旦你有一个输入流,您可以将属性加载到Properties对象如常。

希望这将有助于。

+0

这样的帮助,但它会将问题转移到适当的文档中,以便如何正确设置类路径以供人们遵循。 –

+0

事实上,您必须记录和/或提供启动器外壳脚本(.sh,.bat,...)。顺便说一句,无论选择何种解决方案,您都必须记录它。 ;-) – Algiz

+0

我不介意使用shell脚本启动它,但是它留下了一个命令提示符窗口,其中包含所有调试信息。 –

相关问题