Java将数据写入文件并下载吗?

时间:2012-05-10 08:36:15

标签: java desktop-application filechooser

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

注意:我使用的是NetBeans IDE 7.0.1

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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);
    }
}

这是它使用的进口:

import org.apache.commons.codec.binary.Base64OutputStream;

import org.apache.commons.io.IOUtils;

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

答案 2 :(得分: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());
}