我正在编写一个java应用程序。目前,这会在.jar文件所在的同一目录中生成一个名为“trace.txt”的文件。这有时会导致文件权限问题,例如写入C:\ Program Files \ Foo \ trace.txt。
经过对SO的一些研究后,似乎普遍意见是为给定用户登录Application Data \ Foo \。这与其他操作系统的位置不同。
在这种情况下,最佳做法是什么?我正在使用java.util.logging。
答案 0 :(得分:3)
您总是可以使用USER_HOME,在Linux或
中用〜标识System.getProperty( “的user.home”);在java。
您会看到很多应用都有自己的.myappname文件夹,并将配置文件和日志放在那里。
这将映射到linux中的/home/user/.myapp或Windows中的C:/ Documents and settings / user / .myapp,并且应始终可写。
答案 1 :(得分:1)
如果这是一个“真实”的日志或跟踪文件,我会将其写入您可以通过java.io.tmpdir
系统属性获取的默认临时文件路径。
答案 2 :(得分:0)
如果您的java程序需要“安装”(可能只是设置了一些配置文件,将二进制文件移动到某个地方等),那么在安装过程中处理权限(在任何平台上)是完全没问题的。平台特定的东西,用于任何日志文件,配置,缓存用户设置等。安装通常意味着用户必须以超级用户权限运行安装脚本/程序。所以,你可以这样做。
通常,如果您的应用程序存储用户特定数据,您可以将其存储到/ home //。例如在Linux中就像系统和用户\ ttchong \ AppData一样在Window 7中(我在Window中不是很熟悉,如果我错了,请纠正我)。而且您的代码还需要处理用户路径,以允许多个用户对您的程序进行不同的设置。
否则,如果它是你不介意一起转储的日志文件之类的程序信息,我仍然更喜欢你现在这样做的方式,将它存储在jar文件的同一目录中,或者在日志文件夹中稍微好一点使用“安装”技巧在同一目录中。