1

我是 Java 的新手,面临桌面应用程序的问题。我必须写入数据并将其输出为“data.txt”(意味着不将文件写入固定位置)并让用户下载此文件。我在互联网上搜索了很多,但没有得到任何适当的解决方案。欢迎所有建议。

注意:我使用的是 NetBeans IDE 7.0.1

4

3 回答 3

3

将数据保存在流中,然后显示 FileChooser 对话框,让用户决定将文件保存到何处。然后将流写入所选文件。

可以在此处阅读有关文件选择器的更多信息:http: //docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

于 2012-05-10T08:45:42.153 回答
0

一旦你在服务器上创建了你的文件,你就可以做类似的事情来向我的客户发送图像文件(在我的情况下,它是一个JSP但它实际上并不重要你的客户在哪里):

/**
 * Writes file with a given path to the response.
 * @param pathToFile
 * @param response
 * @throws IOException if there was some problem writing the file.
 */
public static void writeFile(String pathToFile, ServletResponse response) throws IOException {
    try(InputStream is = new FileInputStream(pathToFile);
        OutputStream out = new Base64OutputStream(response.getOutputStream());){
        IOUtils.copy(is, out);
    }
}

这些是它使用的导入:

导入 org.apache.commons.codec.binary.Base64OutputStream;

导入 org.apache.commons.io.IOUtils;

在客户端(在您的桌面应用程序中),您将使用相同的IOUtilsBase64对其进行解码,然后您可以将其存储在您想要的任何地方。对于这一点,@Matten 实际上给出了一个简洁的解决方案(+1)。

于 2012-05-10T08:58:31.493 回答
0

我有例子,JFileChooser但很抱歉仍然没有明白你对下载的看法。

BufferedOutputStream buff = null;
BufferedReader reader = null;
JFileChooser fileChooser;
File file;

fileChooser.showSaveDialog(this);

file = new File(fileChooser.getSelectedFile().toString());
file.createNewFile();

reader = new BufferedReader(new StringReader("String text"));
buff = new BufferedOutputStream(new FileOutputStream(file));

String str;
while ((str = reader.readLine()) != null) {
    buff.write(str.getBytes());
    buff.write("\r\n".getBytes());
}
于 2012-05-10T09:02:17.713 回答