避免那种把文件采用输入流读取出来,然后修改,然后采用输出流保存到文件这种操作!!
把这一行标记为不垃圾数据,而不是删除。######例如把这一行的数据全部标记为在这个文件中不会出现的字符,如||||||||||||||||||||||||||||||||||。至于修改,相当于添加一个新的记录,同时用上面的方法标记已经存在的行为不在使用。过一段时间整理一下这个文件,逐行读取这个文件到新文件,删除掉的行不写入新文件。标记法有个好处。不会影响文件的索引数据。当然更新和新添加的记录需要更新索引。######嗯,是这个意思,怎么标记呢!!其中某一行,已经是写好的了,中间如何修改这一行的数据呢!!###### 无论任何语言,都必须先将文件读入内存里面,然后在内存中操作,再输出到磁盘上。可以使用一些技巧如多线程来加快效率,但是这个基本过程是不会变的。
######某种程度上取决于你文件的结构。好比XML文件,有基于事件驱动的解析,也有一次读入到内存的解析方法,各有优缺点,你的文件结构要不好,那也没什么好办法。######首先你自己要想好了,是要节省时间还是要节省空间,节省时间,就尽量读入到内存处理,节省空间,就将文件逻辑上分成几部分,比如分成10份,线程池里放几个线程处理单独一份,统计每一分的处理结果,最后合并######逻辑上内不能分开,就要看你的文件结构合不合理,毕竟你不是仅仅要一个统计结果,而是读写综合的######尽最大能力节省时间,但是文件是二进制文件,数据会比较多,想中间找到某一条数据,直接修改它,应该是找到某一条数据的起始位置,坐标从这个位置开始,把这条数据的长度重新写0。######每次只读一行 然后处理一行写入到新文件里。######这个操作非常频繁,文件还比较大,实时操作文件的,这个方法单一操作ok,实时读写,会跟不上我的时间要求!!!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。