我的磁盘文件为100mb(最大可达300mb)。有空值和一些其他控制字符不应该在那里。起初我将字符串读入内存,然后重新读取Char by Char,然后删除有问题的Chars并将干净的东西放入StringBuilder,然后对其进行ToString。
当然使用太多记忆。我需要弄清楚如何去掉磁盘上的坏ASCII值。也许(.NET 4)内存映射文件流是正确的(我前一段时间从Memory Mapped File to Read End of File?检查过这个)?
所有想法都赞赏。感谢。
答案 0 :(得分:0)
如果您需要缩小文件以删除不良字符,则只需一次读取字符或块中的文件,然后将其写入跳过错误字符的新文件。
这也让你撤消!
如果您可以替换错误的字符,以便文件的长度不会改变,那么映射文件并扫描内存,用例如空格替换每个坏字符(ascii 32)。这是最简单的,可能更快 - 但无论哪种方式,你都将被原始磁盘i / o
所支配