我想比较两个文件,一个是在文件系统中,另一个是从HTTP URL下载的。
我们试图通过byte []数组进行比较(我们使用Apache的HTTPRequestBuilder),但担心的是文件可能太大而且可能耗尽内存。我们有没有好的替补。
答案 0 :(得分:2)
您可以通过一次只读取缓冲区来比较两个InputStream
对象的内容。当你从每个流中“耗尽”时,你需要读取数据,并在你调用read
时注意到你可能最终没有真正读取完整的缓冲区。
如果来自缓冲区的每个逐字节比较相等并且流同时耗尽数据,则两个流相等。我怀疑代码可能略显繁琐,但它不应该太糟糕。
事实上,对于更简单的代码,如果将每个InputStream
包装在BufferedInputStream
中,则可能只是逐字节进行比较(调用无参数{{ 1}}每次迭代的方法)而不会失去太多的性能:
read()