在Java应用程序中保存文件的好地方是什么?

时间:2009-11-25 00:08:52

标签: java

我有一个需要保存单个文本文件的Web Start应用程序。我想知道我应该在哪里编写文件,这样无论运行什么平台,它都会进入一个整洁的位置。

如果我得到这样的文件路径......

new File(System.getProperty("user.dir") + System.getProperty("file.separator") + "test.txt);

...然后该文件在Linux上编写得很好而且不显眼,但在Windows上的桌面上,以及我正在运行该程序的图标,这并不理想,因为用户不一定需要知道或者关心文件是否存在。

是否有一种良好的,与平台无关的获取文件路径的方式,允许我将文件保存在某处谨慎?我不太关心它最终的位置,只要桌面上没有完整的视图。

感谢。

尼尔

5 个答案:

答案 0 :(得分:10)

user.dir是当前的工作目录;使用user.home代替java.io.tmpdir代替临时文件。

这是Java 1.5的list of predefined properties

答案 1 :(得分:6)

使用.yourapp下的user.home目录怎么样?您不应该面临任何权限问题,Windows用户不会真正注意到它,它将隐藏在GNU / Linux上。

对于临时内容,您可能更喜欢java.io.tmpdir,但请记住,重启后此目录(GNU / Linux上的/tmp)的内容可能会被删除(例如使用Debian发行版)。所以这真的是暂时的。

PS:我更喜欢使用File.separator而不是System.getProperty("file.separator")

答案 2 :(得分:5)

我强烈建议您使用PersistenceService

答案 3 :(得分:2)

如果您不需要每个用户的文件或非常永久,您可以使用System.getProperty(“java.io.tmpdir”));

答案 4 :(得分:1)

正如其他人所说,“user.home”是一个不错的选择。如果你可以逃脱它,偏好是存储某些东西的另一个好选择。

如果您 最终使用类似“user.home”的内容,请确保您具有后备位置。我遇到过许多用户主目录不可写的情况(例如,在域服务器下锁定Windows安装)。

如果将数据存储在“user.home”目录中,则将其放在“.myApp”样式子目录下,首先验证是否可以创建该目录。如果您无法创建该目录,那么您始终可以提示用户输入存储它的位置。然后将该位置存储在系统Preference中,以便下次运行应用程序时知道它。