java导出txt文件的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java导出txt文件的问题?相关的知识,希望对你有一定的参考价值。

response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition","attachment; filename=1.txt");
for(Object obj:list)
CcCompareCrbt c=(CcCompareCrbt) obj;
try
response.getWriter().print(c.getCompare_type()+"\r");

response.getWriter().print(c.getUser_Type()+"\r");
response.getWriter().print(c.getOds_Content()+"\r");
response.getWriter().print(c.getHlr_Content()+"\r");
response.getWriter().print(c.getCrbt_Content()+"\r");
response.getWriter().print(c.getIbp_Content()+"\r");
response.getWriter().print(c.getHlr_Id()+"\r");
response.getWriter().print(c.getIbp_User_Id()+"\r");
response.getWriter().print(c.getCompare_Date()+"\r\n");
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();



为什么这样只能导出少量数据,大量数据就不行呢?
要怎么样修改这个程序呢?
请大家帮我看看,谢谢大家了
我用 StringBuffer接受 在用 一个response.getWriter().print也不能支持大量数据

response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition","attachment; filename=1.txt");
StringBuffer sb=new StringBuffer();
for(Object obj:list)
CcCompareCrbt c=(CcCompareCrbt) obj;

sb.append(c.getCompare_type()+"\t");
sb.append(c.getGtn_Telephone()+"\t");
sb.append(c.getUser_Type()+"\t");
sb.append(c.getOds_Content()+"\t");
sb.append(c.getHlr_Content()+"\t");
sb.append(c.getCrbt_Content()+"\t");
sb.append(c.getIbp_Content()+"\t");
sb.append(c.getHlr_Id()+"\t");
sb.append(c.getIbp_User_Id()+"\t");
sb.append(c.getCompare_Date()+"\r\n");


try
response.setContentType("text/html;charset=utf-8");
response.getWriter().print(sb.toString());
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();

参考技术A 我觉的你的问题在于在循环中一直调用response.getWriter().print();这句,计算机运行中response.getWriter()会不停的生成一个PrintWriter类的对象,导致堆空间在短时间内生成大量的对象,在垃圾回收器未来的及回收之前就内存溢出了。
建议修改:在循环外使用PrintWriter pw=response.getWriter();
循环内使用pw.print();方法。再试试看

如果你的list里放了太多的数据,这样自身就会内存溢出。list中的对象如果没内存溢出,再使用上面说的方法试,不要再用StringBuffer存list中的数据,StringBuffer存list内数据时也是占用内存的,这样你内存消耗的更快。

list最好分成多次存储对象。本回答被提问者采纳
参考技术B 大量数据会导致OutOfMemoryError
一是可以调整java内存大小解决
二是采用小批多次导入的设计解决
参考技术C 不是很清楚 参考技术D 大数据得设置一个缓冲区,bufferwriter什么的,缓冲满了记得flush,否则异常..

如何将命令提示符的输出导出到 txt 文件

【中文标题】如何将命令提示符的输出导出到 txt 文件【英文标题】:How to export output from command prompt to txt file 【发布时间】:2021-02-18 07:17:08 【问题描述】:

我下载了 Selenium 服务器(https://www.selenium.dev/downloads/,然后运行命令: java -jar selenium-server-standalone-3.141.59.jar -role hub >>server.txt

创建日志文件 server.txt。然而,它是空的。我需要在这个文件中查看命令提示符的内容。我在 Windows 上运行它。有什么建议吗?这是执行此命令后的命令提示符内容:

【问题讨论】:

如果它正在写入控制台,那么您无能为力。但如果它只是写入不同的文件流,那么下面的答案应该可以工作。 【参考方案1】:

有多种输出类型。将所有内容重定向到文件时,使用 &1 作为文件描述符 1 的值。因此,通过使用 2>&1,您将 strerr 重定向到与 stdout 相同的输出,因此这应该可以解决问题:

(java -ar selenium-server-standalone-3.141.59.jar -role hub)>server.txt 2>&1

【讨论】:

是的,确实如此。感谢格哈德。

以上是关于java导出txt文件的问题?的主要内容,如果未能解决你的问题,请参考以下文章

java导出txt文件

如何将命令提示符的输出导出到 txt 文件

java读取excel文件,按照指定的日期条件读数据,然后导出txt存储并以其日期命令

将 SQL 查询从 Python 导出到 txt 文件

如何仅将提交的文件名导出到 git 中的 txt 文件? [复制]

DBeaver,从数据库 Postgres,表结构(属性)导出到文件 .txt