我最近在一次采访中被问到这个问题。
给定一个输入文件、一个正则表达式和一个输出文件。读取输入文件,将每一行与正则表达式匹配,并将匹配的行写入输出文件。
我想出了使用链接到 FileReader 的 BufferedReader 的粗略方案(以优化从磁盘读取)。我使用了类似的写作方案。
面试官接着说,这个过程需要 3 秒从文件中读取一行,1 秒将正则表达式与该行进行比较,另外 5 秒写回。所以每行总共需要9秒。我们该怎样改进这个?
我建议一次读取整个文件,处理它并立即写入整个输出文件。但是,有人告诉我这无济于事(写 1 行 = 5 秒,写 2 行 = 10 秒)。
面试官进一步表示,这是由于硬件/硬盘驱动器的限制。有人问我如何改进我的代码以减少每行的总秒数(当前为 9 )?
我只能想到缓冲的读/写,也找不到太多关于 SO 的内容。有什么想法吗 ?