一个900M文本,里面有一句话”今天的时间是“
在这个后面追加今天的时间。
C#是怎么做的呢,找大神指导指导....

------解决思路----------------------
非常难做,性能最好的实现方法也要把这句话后的文本全部复制一遍。
------解决思路----------------------
基本上有两个要点:
1. 要将待查询内容,按照文件的编码方式,事先计算为byte[]。结果就是将问题转换为在900M文件中查找这个byte[]。
2. 要考虑到内存占用问题。读取文件内容的Stream不要一次读取很多字节,一次读取1~20字节都是可以的,总之在内存中只有几十个字节就足够了,不要在内存中驻留过多(例如10M甚至900M)内容。一边读取,一边在已经读取的内容中查找这个byte[],同时把已经pass掉的字节是释放掉。
如果要考虑进一步提高,那么可能需要考察一下字符串查找中常见的优化速度方法。也就是先对待查找的byte[]的每个字节计算一个“跳转间距”,当没有在文件stream中的某个位置比对到byte[]的某一位时,根据这个间距而加快pass掉的字节数(而不是每次只跳过1个字节)。这在计算方法或者数据结构的基本教程上都有专门的课程讲解。
------解决思路----------------------
而说到所谓“文件中追加”,由于这种场景设计的就是很低级的东西,所以并没有什么特别的处理办法。就是把900M的文件完全复制到新的文件中,在上述的“查找”的过程中同时将写到新文件中,这就是“在文件中追加时间字符”了。
------解决思路----------------------
为什么可能是要整个文件复制呢?比如说在80M、200M、430M.....等的地方有这个字,如果你要简单地插入内容,那么要把80M以后的所有内容先复制到别的文件中,然后插入内容之后再复制一遍到刚刚插入的内容的后边。其它找到的位置也要如法炮制。结果就是有许多次“上百M内容的反复复制”操作。
而一边查找一边写目标文件(实际上就是归并两个内容了),不管有多少个待插入内容的位置,整体来说只要复制一遍。
所以结论是,这个“追加内容”不是搞什么“插入内容”,而是复制到新的文件中,最后在把原始文件删掉、把生成的新文件改名。
------解决思路----------------------
能不能这么做呢 ,如果查找字符串第一个是中文,那么就过滤掉英文,判断每一个中文,如果出现第一个字符,才查询下一个,如果完全匹配,就添加字符,否则就依次写入临时文件。貌似看上去效率很慢的赶脚。
或者每次读取一部分查询是否有相应字符串,有就添加进入,然后写入文件