java如何删除文件的某一行数据呢,前提是文件比较大?:报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

java如何删除文件的某一行数据呢,前提是文件比较大?:报错

kun坤 2020-06-08 17:01:19 82

避免那种把文件采用输入流读取出来,然后修改,然后采用输出流保存到文件这种操作!!

Java
分享到
取消 提交回答
全部回答(1)
  • kun坤
    2020-06-08 17:58:07

    把这一行标记为不垃圾数据,而不是删除。######例如把这一行的数据全部标记为在这个文件中不会出现的字符,如||||||||||||||||||||||||||||||||||。至于修改,相当于添加一个新的记录,同时用上面的方法标记已经存在的行为不在使用。过一段时间整理一下这个文件,逐行读取这个文件到新文件,删除掉的行不写入新文件。标记法有个好处。不会影响文件的索引数据。当然更新和新添加的记录需要更新索引。######嗯,是这个意思,怎么标记呢!!其中某一行,已经是写好的了,中间如何修改这一行的数据呢!!###### 无论任何语言,都必须先将文件读入内存里面,然后在内存中操作,再输出到磁盘上。可以使用一些技巧如多线程来加快效率,但是这个基本过程是不会变的。

    ######某种程度上取决于你文件的结构。好比XML文件,有基于事件驱动的解析,也有一次读入到内存的解析方法,各有优缺点,你的文件结构要不好,那也没什么好办法。######首先你自己要想好了,是要节省时间还是要节省空间,节省时间,就尽量读入到内存处理,节省空间,就将文件逻辑上分成几部分,比如分成10份,线程池里放几个线程处理单独一份,统计每一分的处理结果,最后合并######逻辑上内不能分开,就要看你的文件结构合不合理,毕竟你不是仅仅要一个统计结果,而是读写综合的######尽最大能力节省时间,但是文件是二进制文件,数据会比较多,想中间找到某一条数据,直接修改它,应该是找到某一条数据的起始位置,坐标从这个位置开始,把这条数据的长度重新写0。######每次只读一行  然后处理一行写入到新文件里。######这个操作非常频繁,文件还比较大,实时操作文件的,这个方法单一操作ok,实时读写,会跟不上我的时间要求!!!

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程