java大文件首行追加,java中实现,在大文件的第一行添加内容

需求描述:

最近在写一个定时任务,发送多次请求到接口,接口返回报文写入到一个文件中,文件要求格式第一行为总数。这个总数只能在最后的时候才能知道,

这就相当于提出了一个要求:在文件的第一行添加内容,以前的内容整体向下偏移一行。

遇到的问题:

我开始做的方法是,在代码中 new StringBuffer ,等全部报文返回后,把返回的报文先全部保存到buffer中,用PrintWriter写入总数到文件,再将返回报文写入。可在实际代码运行中,由于每次返回的报文都存入到buffer中,返回的报文对象被buffer对象引用,没有释放掉,所以占用内存很大。折腾了半天不可行。只能换一种思路了。这个文件大小是50多M,内存几百兆没了。

那既然一次性保存到buffer中不行,那就返回一次报文就保存到本地临时文件中tmpFile,最后在另一个文件dinsFile中先写入总数,从tmpFile没读取一行,就写入到dinsFile。一开始没想到用Scammer这个类,从网上看其他网友的博文才发现正适合,还是很菜,多多学习。

这样占用内存的问题就解决了。下面上代码:

public class QueryBondBalTask extends BaseService{

private String url;

private Logger logger = Logger.getLogger(QueryBondBalTask.class);

public void setUrl(String url) {

this.url = url;

}

public void getBondBalToText() {

ICstpCustodianConfigDao cstpCustodianConfigDao = (ICstpCustodianConfigDao) context.getBean("ICstpCustodianConfigDao");

List list = cstpCustodianConfigDao.selectCustodianAccount();

// 创建输出临时文件

String date = DateTimeClass.getCurDate();

String name = "tmp_bond_subject_csbs_" + date + "_.txt";

String t

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值