Java JNLP FileSaveService在调用saveAsFileDialog方法时忽略给定的名称和扩展名

Java JNLP FileSaveService在调用saveAsFileDialog方法时忽略给定的名称和扩展名,java,file-io,jnlp,java-web-start,savefiledialog,Java,File Io,Jnlp,Java Web Start,Savefiledialog,我需要在MAC上装载.dmg时传递命令行参数。为此,我使用了JNLP,它是使用JSP动态合成的,响应内容类型为application/x-java-JNLP-file。JSP的内容如下: <?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="http://10.40.42.134:8080/TestJNLP/"> <information> <title>jn

我需要在MAC上装载.dmg时传递命令行参数。为此,我使用了JNLP,它是使用JSP动态合成的,响应内容类型为
application/x-java-JNLP-file
。JSP的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://10.40.42.134:8080/TestJNLP/">
 <information>
    <title>jnlp.JSP</title>
    <vendor>Sun Microsystems, Inc.</vendor>
 </information>
 <resources>
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
    <jar href="lib/faren2.jar" main="true" />
 </resources>
 <application-desc name="Dynamic Tree Demo Application" main-class="org.Test" width="300" height="300">
    <argument><%=request.getParameter("arg1")%></argument>  
    <argument><%=request.getParameter("arg2")%></argument> 
 </application-desc>
 <security>
    <all-permissions/>
 </security>
</jnlp>

jnlp.JSP
太阳微系统公司。
使用我传递的参数正确调用JNLP

现在有两个问题进一步发展:

首先触发JNLP后,我的主类从
FileSaveService
调用
saveFileDialog
在用户系统上保存.dmg,但JNLP客户端(在MAC上打开的Save Dialog)在调用该方法时忽略了我传递的名称和扩展名。 我们如何使JNLP客户机尊重我传递的名称和扩展名


第二个,我如何知道用户保存.dmg的路径,以便以编程方式挂载它?了解用户保存文件的路径非常重要。

我认为使用
FileSaveService
不可能做到这一点

saveFileDialog
的路径和扩展参数只是提示。实现可以随意忽略它们

FileContents.getName()
将只告诉您名称,而不告诉您目录。这是故意的。依赖
FileSaveService
的JNLP应用程序被视为不受信任,路径可能是一个隐私问题。如果我选择将DMG文件保存在名为
C:\Users\S\u Rushdie\My Documents\Porn
的目录中,我可能不希望您的程序将其包含在稍后上载到服务器的日志中


如果您需要更大的控制权,我认为您需要对应用程序进行签名,授予它
,并使用
JFileChooser
FileOutputStream

+1,特别是对于目录名。这就是一切谢谢@finnw。我现在正在使用JFileChooser。@AndrewThompson只是一个一般性的查询,如果我们已经有了JFileChooser,为什么还要使用FileSaveService呢。我想你是最好的回答者this@Harshdeep适用于应用程序不可用的情况。不需要知道打开或保存资源的位置。像这样的情况很少发生。GIFanim既可以自由浮动,也可以嵌入。它可以加载帧并保存生成的动画GIF,并且完全是沙盒的。:)