【发布时间】:2010-01-12 00:08:15
【问题描述】:
我即将开始一个项目,我可以预见其中有需要编辑的大文件(主要是平面文本文件,但可能是 CSV、固定宽度、XML 等)。我需要开发组件以在应用程序中进行此编辑。
在尝试确定一种无需加载整个数据来处理编辑大量数据(可能进入 GB 范围)的好方法时,我发现 Audacity 能够很好地处理大文件。 Audacity 是开源的,所以我认为在这种情况下它对我来说是一个很好的教学工具。但是,我开始在循环中思考自己的代码,现在我完全糊涂了。
我希望这个问题有两个结果:
无需加载整个文件即可处理此编辑的好方法。我考虑在他们编辑数据时加载数据,按需缓存。
Audacity 是如何做到的。
我正在使用 C# 和 .NET,但答案不需要耦合到那个环境。
【问题讨论】:
-
处理大文件的策略确实取决于文件格式,最好知道你在计划什么,它是什么类型的数据(可能是音频数据)?
-
在 Windows 上,您可以简单地将文件映射到地址空间中的某个位置。只要文件大小不大于您实际处理的大小,您就可以像这样处理它,让操作系统分页代码处理内存管理。
-
EmEditor 非常适合处理大文本文件,如果您正在寻找编辑器。或者这是你想以编程方式做的事情?如果是这样,您将进行哪些类型的编辑,以及对什么进行编辑?
-
@Anon - 你也可以在 posix 系统上使用 mmap() - en.wikipedia.org/wiki/Mmap
-
@fatcat:我需要以编程方式进行。编辑将在一个伞式应用程序中完成。 @Seth:我现在可以肯定的是,它将是要编辑的文本文件。至于里面的格式,我被告知我需要“保持灵活”。我希望提出一个可以全面应用的通用算法。我的猜测是他们倾向于 XML。
标签: editing large-files