通过JNLP写入本地文件

时间:2012-06-13 20:45:33

标签: java security file-io jnlp java-web-start

我有一个特定的要求,从jar文件中读取资源,然后将其写入本地磁盘。但是当我尝试将该资源写入本地磁盘时出现异常:

java.io.FilePermission (write) is raised.

我的罐子签了。我也尝试过以下解决方案,但它也不起作用。

AccessController.doPrivileged(new PrivilegedAction() 

似乎没什么用。

签署jar后我错过了一步,因为这是最常见的解决方案吗?

如何在不使用策略文件的情况下写入本地文件(因为无法在每台客户端计算机上完成)?

2 个答案:

答案 0 :(得分:4)

您可以使用javax.jnlp.FileSaveService从未签名的WebStart应用程序保存带有用户交互的文件。

您可能缺少的一个部分是在JNLP文件中将应用程序标记为安全。但是,编写安全的应用程序有点棘手,我不推荐它。

答案 1 :(得分:3)

JNLP还需要指定:

<security>
    <all-permissions/>
</security>

有关详细信息,请参阅JNLP File Syntax


我通常会使用Tom的答案中详述的FileSaveService,但这听起来更像是'文件'可能是用于配置应用程序的默认属性文件。自应用程序以来,保存服务不太适合。无法知道文件的存储位置或以后如何访问它。出于安全原因,代替FileContents提供的File对象没有返回路径的方法。

在这种情况下,请提取配置的详细信息。档案&amp;使用JNLP API的PersistenceService存储它们。这是一个demo. of the PersistenceService。此服务也适用于沙盒应用。 (没有代码签署伏都教)。