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

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

展开
收起
kun坤 2020-06-08 17:01:19 606 0
1 条回答
写回答
取消 提交回答
  • kun坤

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

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

    2020-06-08 17:58:07
    赞同 展开评论 打赏
问答分类:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
JAVA 应用排查全景图
立即下载
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载