gpt4 book ai didi

swing - JNLP FileSaveService 打开文件打开对话框

转载 作者:行者123 更新时间:2023-12-04 08:52:38 26 4
gpt4 key购买 nike

嗨,我正在尝试从 Java Webstart 应用程序保存文件。

public class Main {
public static void main(String[] args) {
try {
FileSaveService fos = (FileSaveService) ServiceManager.lookup("javax.jnlp.FileSaveService");
//open Dialog
FileContents fc = fos.saveFileDialog("c:/data", null, new ByteArrayInputStream("Hallo Welt".getBytes()), "name.txt");
System.out.println("FileContents: " + fc);
} catch (UnavailableServiceException e) {
System.err.println("***" + e + "***");
} catch (IOException e) {
System.err.println("***" + e + "***");
}
//wait a minute
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
System.exit(0);
}
}

一切正常,只是出现的对话框看起来像“打开”文件对话框,而不像“保存”文件对话框:

FileDialog

任何帮助,将不胜感激。

最佳答案

文件打开对话框是必要的。您首先需要让用户选择保存数据的位置。因此,对于 jnlp 应用程序来说,先前对 openFileDialog 的调用是绝对必要的。不允许直接保存到特定位置,如 c:

如果您按照上述链接 ( http://docs.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/examples.html#FileSaveService ) 操作,您应该会成功。

编辑:
为了澄清。
通过 javax.jnlp.FileSaveService 保存确实需要一次调用。例如,像这样调用 saveFileDialog() 就足够了:

fss.saveFileDialog(null, null, new ByteArrayInputStream("Hallo Welt".getBytes()    ), "newFileName.txt");

一个用户对话的必要性是由于 jnlp 的匿名性,您的应用程序不应获得有关用户文件系统的任何提示。
但是,我必须承认,这不是您的问题。

您的主要麻烦来自 java 应用程序每次呈现“开放对话”而不是“保存对话”。

这不应该发生!如果我可以从你打电话的片段中谦虚地假设 fos.saveFileDialog : 你是不是通过 FileOpenService 而不是 FileSaveService 来初始化 fos ?

关于 FileSaveService 的更多细节可以在这里找到: http://docs.oracle.com/javase/7/docs/jre/api/javaws/jnlp/javax/jnlp/FileSaveService.html

关于swing - JNLP FileSaveService 打开文件打开对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16608669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com