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

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

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

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

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

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

谢谢。

尼尔

user.dir是当前的工作目录; 使用user.homejava.io.tmpdir用于临时文件。

这是Java 1.5 的预定义属性列表 。

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

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

PS:我更喜欢在System.getProperty("file.separator")上使用File.separator

我强烈建议使用PersistenceService

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

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

如果你最终使用“user.home”这样的东西,那么请确保你有一个后备位置。 我曾经遇到许多用户主目录不可写的情况(例如,锁定Windows安装在域服务器下)。

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