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
我现在的方法是
- 将整个 file2 内容读入数组
- 获取 File1 的第一行并提取前 8 个数字 遍历步骤 1 中的
- 整个数组,以查看步骤 1 中的 8 个数字是否匹配
- 如果数字不匹配,则将步骤 1 中的行写入新文件
- 如果它们匹配,则脱离循环,不要将行写入新文件
- 继续,直到没有更多行可从步骤2读取
但是,由于文件太大,因此执行此操作需要花费大量时间,因为对于 file1 中的每一行,我们正在循环遍历整个数组(9516 个元素(。有没有更简单的方法可以执行这种类型的文件操作,而无需将文件中的记录放入数据库表中。
在哈希中读取 file2,数字作为键,"true"作为值。哈希被设计为在查找时快速 - 比数组快得多。
您可以将 File1 的块读入内存,避免大量阻塞 IO。