我正在编写一个Java应用程序,它编写了许多文件,然后读取文件中的值。我使用InstallShield在C:\Program Files
下安装应用程序,这是通常创建临时文件的地方。但是,在使用Windows 7时,文件是在用户临时文件夹下创建的,而是使用随机名称。
这是我的代码......
File usersTemp = File.createTempFile("users", null,temp);
这是生成的文件......
C:\Users\TP\AppData\Local\Temp\users2343200092608531612.tmp
由于文件是使用随机数生成的,因此很难将文件检索回来进行处理。有一个更好的方法吗?
答案 0 :(得分:2)
除非您以超级用户身份运行(您可能不是),否则您只能编辑用户主目录中的文件,您可以使用user.home
system property找到该文件:
System.getProperty("user.home")
因此,如果您想将文件保存在应用程序的应用程序数据文件夹中:
File appDataFolder = new File(System.getProperty("user.home"), "Local Settings\\Application Data\\YourProgramName");
然后保存在该文件夹下的内容,它们会一直存在。
答案 1 :(得分:1)
有什么理由不能正常保存文件(根据需要命名)?我为Windows 7编写了许多Java程序,并且在保存文件时没有任何问题。
只需使用FileOutputStream或您通常用于保存文件的任何方法。
答案 2 :(得分:1)
Temp文件的定义是它应该只存在很短的时间。您似乎想要创建一个将持续较长时间的文件,可能在应用程序的运行之间保留?如果是这种情况,您应该创建一个具有正确名称的文件......
new File("c:\filename.txt").createNewFile();
这样,无论您在哪个操作系统上运行应用程序,都可以选择适合的目录和名称。