【发布时间】:2012-07-19 00:36:39
【问题描述】:
从一个巨大的(想想 2-3 GB)文件中删除第一行的最快和最聪明的方法是什么?
我认为,您可能无法避免逐块重写整个文件,但我可能错了。
是否可以使用内存映射文件以某种方式帮助解决此问题?
是否可以通过直接在文件系统(例如NTFS)上操作来实现这种行为——比如更新相应的
inode数据并更改文件起始扇区,从而忽略第一行?如果是,这种方法是否真的很脆弱,或者还有许多其他应用程序,除了OS本身做类似的事情?
【问题讨论】:
-
更改第一行后,您将有重写剩余的内容。考虑对文件进行反向排序...
-
您应该用相关的操作系统和 FS 标记您的问题 - 可能存在一个文件系统/操作系统组合,可以编辑磁盘上的文件。
-
没有什么特别的技巧。 NTFS 不能那样工作。
-
用例会有所帮助。你控制文件的生成吗?解析器?还有其他变量吗?
-
你想到了什么样的文件??
标签: c# c++ performance file io