使用带有保存对话框的 java 将内容导出到文本文件

Posted

技术标签:

【中文标题】使用带有保存对话框的 java 将内容导出到文本文件【英文标题】:export content to a text file using java with save dialog 【发布时间】:2012-09-26 09:29:37 【问题描述】:

我有一个包含一些值的结果集,我想将结果集中的数据导出为带有保存对话框的文本文件。

如何在 java 中做到这一点?

我已经完成了excel和java的上述要求,如下所示。

response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".xls\"");

response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".pdf\""); response.setContentType("application/pdf");

更新:

if(exportTo.equals("text"))
            response.setContentType("text/plain");
            response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".txt\"");
            try 

             catch (Exception e) 
                // TODO: handle exception
            

        

在这个

在尝试块中如何将结果集中可用的内容设置为输出流并使其可用。

【问题讨论】:

【参考方案1】:

唯一的区别是:

response.setContentType("text/plain");

您可以在此处查看完整示例 (http://www.mkyong.com/servlet/servlet-code-to-download-text-file-from-website-java/)

更新

这是我开发和测试过的演示,运行良好:

public class ServletDownloadDemo extends HttpServlet 
    private static final int BYTES_DOWNLOAD = 1024;

    public void init(ServletConfig config) throws ServletException 
        super.init(config);
    

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
                                                                                       IOException 
        response.setContentType("text/plain");
        response.setHeader("Content-Disposition", "attachment;filename=downloadname.txt");

        String s = "Test\n\nText file contects!!";
        InputStream input = new ByteArrayInputStream(s.getBytes("UTF8"));

        int read = 0;
        byte[] bytes = new byte[BYTES_DOWNLOAD];
        OutputStream os = response.getOutputStream();

        while ((read = input.read(bytes)) != -1) 
            os.write(bytes, 0, read);
        
        os.flush();
        os.close();
    

它会下载一个名为downloadname.txt 的文本文件,其内容为String s

更新 2

    String s = "";
    while (rs.next()) 
        s += rs.getString("column_name");
    

    if (exportTo.equals("text")) 
        response.setContentType("text/plain");
        response.setHeader("Content-Disposition", "attachment;filename=downloadname.txt");

        try 
            InputStream input = new ByteArrayInputStream(s.getBytes("UTF8"));

            int read = 0;
            byte[] bytes = new byte[BYTES_DOWNLOAD];
            OutputStream os = response.getOutputStream();

            //data form resultset

            while ((read = input.read(bytes)) != -1) 
                os.write(bytes, 0, read);
            
            os.flush();
            os.close();
         catch (Exception e) 
            // TODO: handle exception
        
    

您必须填写您的ResultSet 并将您需要的内容放入String s就是这样。

【讨论】:

我试过但没用,我的问题是从结果集中生成一个文本文件并让文件可供下载,不需要保存在任何地方 感谢您的帖子,但您仍然没有理解我想的问题。 instead of String s i want to set the content of the file from resultset,这就是我面临的问题。查看我更新的问题

以上是关于使用带有保存对话框的 java 将内容导出到文本文件的主要内容,如果未能解决你的问题,请参考以下文章

怎么将一个java程序的结果输出到文本文档中,写一段代码,谢谢

jsp调用java方法导出excel为啥会弹出保存或下载的对话框,调用完之后直接将文件保存到指定路径下即可。

如图显示,求助怎么把excel中列的数据,导出到文本文档行的数据而且每个数据后带分号,谢谢了

如何将导出的confluence空间及所有页面 导入到另一个confluence系统

如何将EXCEL表内每行的数据复制到文本文档内,但文本里显示不要分行,以,号隔开就行了

java用FileDialog怎么打开和保存文件