文件比较与内存考虑

时间:2012-12-11 07:14:09

标签: java file memory-management bytearray file-comparison

我想比较两个文件,一个是在文件系统中,另一个是从HTTP URL下载的。

我们试图通过byte []数组进行比较(我们使用Apache的HTTPRequestBuilder),但担心的是文件可能太大而且可能耗尽内存。我们有没有好的替补。

1 个答案:

答案 0 :(得分:2)

您可以通过一次只读取缓冲区来比较两个InputStream对象的内容。当你从每个流中“耗尽”时,你需要读取数据,并在你调用read时注意到你可能最终没有真正读取完整的缓冲区。

如果来自缓冲区的每个逐字节比较相等并且流同时耗尽数据,则两个流相等。我怀疑代码可能略显繁琐,但它不应该太糟糕。

事实上,对于更简单的代码,如果将每个InputStream包装在BufferedInputStream中,则可能只是逐字节进行比较(调用无参数{{ 1}}每次迭代的方法)而不会失去太多的性能:

read()