RFR(JDK12/NIO) 8202285: (fs) Add a method to Files for comparing file contents
Joe Wang
huizhe.wang at oracle.com
Thu Sep 20 18:06:03 UTC 2018
Hi Daniel,
You're right, line 115 is not needed. I'll add a couple of test cases to
cover the route.
Best,
Joe
On 9/20/18, 2:36 AM, Daniel Fuchs wrote:
> Hi Joe,
>
> The spec reads very well to me.
>
> On the implementation side:
>
> 114 } else if (nRead1 != nRead2) {
> 115 int len = Math.min(nRead1, nRead2);
> 116 // there's always a mismatch when nRead1 != nRead2
> 117 return totalRead +
> 118 Arrays.mismatch(buffer1, 0, len, buffer2, 0,
> len);
>
> I believe line 115 is not needed, and line 118 should be:
>
> Arrays.mismatch(buffer1, 0, nRead1, buffer2, 0, nRead2);
>
> otherwise - if I'm not mistaken - there's the chance that
>
> Arrays.mismatch(buffer1, 0, len, buffer2, 0, len);
>
> will return -1. Or am I missing something?
>
> If I'm right then your test is probably missing a case
> to explicitely test for that. Alternatively you could add a whitebox
> test to test FilesMismatch.mismatch(InputStream, InputStream)
> directly.
>
> best regards,
>
> -- daniel
>
>
> On 19/09/2018 19:48, Joe Wang wrote:
>> Hi,
>>
>> After much discussion and 10 iterations of reviews, this proposal has
>> evolved from what was the original isSameContent method to a mismatch
>> method. API-wise, a compare method was also considered as it looked
>> like just a short step forward from mismatch, however, it was
>> eventually dropped since there is no convincing use case comparing
>> files lexicographically by contents. Impl-wise, extensive performance
>> benchmarking has been done to compare a buffered reading vs memory
>> mapping, the result was that a simple buffered reading performed
>> better among small files, and those with the mismatched byte closer
>> to the beginning of files. Since the proposed method's targeted files
>> are small ones, the impl currently does a buffered reading only.
>>
>> Please review.
>>
>> JBS: https://bugs.openjdk.java.net/browse/JDK-8202285
>>
>> specdiff:
>> http://cr.openjdk.java.net/~joehw/jdk12/8202285/specdiff/java/nio/file/Files.html
>>
>>
>> webrev: http://cr.openjdk.java.net/~joehw/jdk12/8202285/webrev/
>>
>> Thanks,
>> Joe
>>
>
More information about the core-libs-dev
mailing list