2012-04-11 56 views
0

我正在编写一个Java应用程序,它可以写入多个文件,并在稍后为其值读取文件。我正在使用InstallShield在C:\Program Files下安装应用程序,这是通常创建临时文件的地方。但是,使用Windows 7时,文件是在用户临时文件夹下创建的,而不是随机的名称。在java中创建文件供以后使用

这里是我的代码...

File usersTemp = File.createTempFile("users", null,temp); 

而且这是被生成的文件...

C:\Users\TP\AppData\Local\Temp\users2343200092608531612.tmp 

随着文件与一个随机数产生,这使得它很难检索文件返回处理。有一个更好的方法吗?

+0

您不能通过调用'usersTemp.getAbsolutePath()'在某个变量中设置文件名,并在以后使用该字符串吗? – 2012-04-11 02:40:19

+0

是的,我试过,但是如果我关闭该程序并再次运行,我没有变量,它将被替换为一个新的。 – sutoL 2012-04-11 02:44:33

回答

2

除非你正在运行的超级用户(这你可能没有),你只能编辑在用户的主目录,文件,您可以用user.homesystem property发现:

System.getProperty("user.home") 

所以,如果你想保存在您的应用程序的应用程序数据文件夹中的文件:

File appDataFolder = new File(System.getProperty("user.home"), "Local Settings\\Application Data\\YourProgramName"); 

然后保存在该文件夹下的东西,他们会坚持。

1

是否有某些原因导致您无法正常保存文件(将其命名)?我已经为Windows 7编写了许多Java程序,并且在保存文件时没有任何问题。

只需使用FileOutputStream或任何您通常用来保存文件的方法。

+0

问题是我的程序无法在C:\ Program Files目录下创建文件,这是因为管理权限,如果我没有错 – sutoL 2012-04-11 02:36:46

1

Temp文件的定义是它应该只存在很短的时间。看起来你想要创建一个文件,这个文件将会持续更长的时间,可能在应用程序的运行之间保持一段时间?如果是这样的话,你应该创建一个适当的文件名为:

new File("c:\filename.txt").createNewFile(); 

这样的话,你可以选择一个目录和名称将是合适的,不管是什么操作系统你'正在运行应用程序。

+0

嗨,这正是我认为会工作,但由于Windows管理权限我会得到一个java.io.IOException:访问被拒绝 – sutoL 2012-04-11 02:40:35

+0

您需要选择一个用户有权写入的目录。可能唯一可行的方法是使用用户主目录,如@Brendan ...'System.getProperty(“user.home”)'所示。所有其他目录可能禁止写入权限。 – wattostudios 2012-04-11 02:43:22