1
File 1: 1356775 lines
File 2: 9516 lines

文件 2 包含在文件 1 中匹配时应从该文件中删除的数字行。例子:

文件 1

34234323432 some useless stuff
23423432342 more useless stuff
98989898329 foo bar blah
65367389473 one two three

文件 2

234234323
653673894

新文件

34234323432 some useless stuff
98989898329 foo bar blah

我现在的方法是

  1. 将整个 file2 内容读入数组
  2. 获取 File1 的第一行并提取前 8 个数字
  3. 从第 1 步循环遍历整个数组,查看第 1 步中的 8 个数字是否匹配
  4. 如果数字不匹配,则将 step1 中的行写入新文件
  5. 如果它们匹配,则跳出循环并且不将行写入新文件
  6. 继续,直到没有更多行可以从第 2 步读取

但是,由于文件很大,因此需要大量时间来执行此操作,因为对于 file1 中的每一行,我们都在循环整个数组(9516 个元素)。有没有一种更简单的方法来执行这种类型的文件操作,而无需将文件中的记录放入数据库表中。

4

2 回答 2

1

以数字为键,以“真”为值,在哈希中读取 file2。散列被设计为快速查找 -比数组快得多

于 2012-02-09T15:27:37.970 回答
0

您可以将 File1 的块读入内存,避免大量阻塞 IO。

于 2012-02-09T15:21:02.803 回答