【问题标题】:Java Web Start Application can read files from local systems, but not write [closed]Java Web Start应用程序可以从本地系统读取文件,但不能写入[关闭]
【发布时间】:2012-06-26 20:19:07
【问题描述】:

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

File T = new File(System.getProperty("user.home") + File.separator + ".myapp/");<br />
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:我所有的罐子也都签名了

【问题讨论】:

标签: java file local jnlp java-web-start


【解决方案1】:

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

temp[1].createNewFile()

仅当文件不存在时才会创建该文件。您可以使用返回布尔标志来确定文件是否已经存在。如果安全管理器拒绝创建请求,此方法也会抛出 IOException

编辑:

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

来自java.io.FileWriterjavadoc:

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

【讨论】:

    【解决方案2】:

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

    非常感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 2021-11-03
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多