Java Web Start应用程序可以从本地系统读取文件,但不能写入

请询问您是否需要更多信息。 我在jnlp中有安全性和所有权限标签,当我运行我的java应用程序离线时,它可以正常工作。

File T = new File(System.getProperty("user.home") + File.separator + ".myapp/");
if(!T.exists()) T.mkdirs(); File[] temp=new File[2]; temp[0] = new File(System.getProperty("user.home") + File.separator + ".myapp"+File.separator+"temp1.txt"); temp[1] = new File(System.getProperty("user.home") + File.separator + ".myapp"+File.separator+"temp2.txt"); writer=new BufferedWriter(new FileWriter(temp[x])); writer.write(finalData); writer.close();

我使用以下方法写入我想在用户系统的目录中创建的文件。 在程序中,我也从同一个文件夹中读取,当我将测试数据放在该文件夹中时,它可以正常工作。 当我删除temp1.txt和temp2.​​txt文件时,它不会读取任何数据。 没有出现任何错误消息。

重申一下,当在java web start中运行时,弹出窗口并且程序正确运行而没有错误消息,但是它没有正确地将文件写入用户系统。 同时,当在.txt文件中提供测试数据时,它会正确读取。

编辑:如果可能的话,有没有使用某些javaw.jnlp。*方法的解决方案? 该程序实际上必须有一个文件夹,其中包含.txt文件

edit2:我的所有jar子也都签了

在使用之前,您可以尝试创建该文件吗?

temp[1].createNewFile()

仅当文件不存在时才会创建该文件。 您可以使用return boolean flag来查明文件是否已存在。 如果安全管理器拒绝创建请求,则此方法也将抛出IOException

编辑:

根据java.io.FileWriter ,文件创建取决于底层平台。 由于您可以读取文件(如果存在)并且只在JNLP应用程序中创建新文件时遇到问题。 我建议使用createNewFile创建一个新文件,而不是依赖FileWriter来创建文件。

来自java.io.FileWriter javadoc:

文件是否可用或是否可以创建取决于底层平台。

对不起伙计们,我是个白痴。 我的jnlp文件在我的本地系统中指向了我的java程序的不同版本,基本上我是个白痴。 当我回家时,我从家用电脑测试了网站,发现了我的错误。

非常感谢你的帮助!