在Java应用程序中保存文件的好地方是什么?
我有一个Web Start应用程序,需要保存单个文本文件。 我想知道我应该在哪里编写文件,这样无论运行什么平台,它都会进入一个整洁的地方。
如果我得到这样的文件路径……
new File(System.getProperty("user.dir") + System.getProperty("file.separator") + "test.txt);
…然后该文件在Linux上的某个地方写得很好而且不显眼,但在Windows上的桌面上,以及我正在运行该程序的图标,这并不理想,因为用户不一定需要知道或关心该文件存在。
是否有一种良好的,独立于平台的方式来获取文件路径,允许我将文件保存在某处谨慎? 我不太关心它最终的位置,只要它不在桌面上的完整视图中。
谢谢。
尼尔
user.dir
是当前的工作目录; 使用user.home
而java.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中,以便下次运行应用程序时知道它。