0

我在磁盘上有一个大小为 20GB 的大型纯文本文件。让我们将此文件命名为“MyFile.txt”。该文件只包含英文单词和一个值为“+++”的字符串。让我们将此字符串命名为 FlagString。从 MyFile.txt 的开头到 FlagString 有正确的英文单词。让我们将这部分文件称为字典。但是从 FlagString 之后的第一个单词到 MyFile.txt 的结尾,这些单词可能有拼写错误。让我们将这部分文件称为 CheckedSection。我必须阅读检查部分中的每个单词并验证该单词的拼写,以按照某种算法将其与 Dictionary 中的适当单词进行比较。如果 MyFile.txt 很大,我想使用 CreateFileMapping 和 MapViewOfFile 函数将文件映射到内存中。我的问题如下:

  1. MyFile.txt 很大,所以我想将它片段映射到内存中。让每个片段的大小为 1GB。请帮助我如何使用 CreateFileMapping 在内存中映射文件碎片。
  2. 当我使用碎片文件映射到内存时,如何将 FlagString 识别为 Dictionary 和 CheckedSection 之间的分隔符。MyFile.txt 中的 FlagString 在 1GB 部分边界上可能不是强制性的,但它可能在 1GB 部分内。文件映射到内存后,是否有任何文件光标用于标记文件中的位置?
  3. 我可以从 MyFile.txt 创建两个内存映射吗?Dictionary 的一个映射和 CheckedSection 的另一个映射。
  4. 每次完成 Dictionary 或 CheckedSection 的当前 1GB 部分的处理后,我必须调用 UnmapViewOfFile 和 CloseHandle 吗?
4

0 回答 0