RFR(JDK11/NIO) 8202285: (fs) Add a method to Files for comparing file contents

Joe Wang huizhe.wang at oracle.com
Tue May 1 00:04:55 UTC 2018


Good point. So even if we go with "has" (instead of "is"), it'd be 
hasSameContent, semantically, it would be "has the same content".

-Joe

On 4/30/2018 4:10 PM, Jonathan Gibbons wrote:
> At the risk of triggering a #bikeshed on the relative merits of 
> "content" vs. "contents", I note that String has put a stake in the 
> ground for the singular form, with contentEquals.
>
> https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#contentEquals-java.lang.CharSequence- 
>
>
> -- Jon
>
>
> On 4/30/18 4:02 PM, Joe Wang wrote:
>> Hi Jonathan,
>>
>> hasSameContents does read better in English. This one was made 
>> isSameContent since I thought we'd want to stack it next to the 
>> existing isSameFile method since it's meant to be an extend to that 
>> method. I'd love to hear what people think about this. I'm open to 
>> change the name if there's a good consensus.
>>
>> Cheers,
>> Joe
>>
>> On 4/27/2018 4:01 AM, Jonathan Bluett-Duncan wrote:
>>> Hi Joe,
>>>
>>> I wonder if the method `isSameContent` should be named 
>>> `haveSameContents` so as to read more fluently in English.
>>>
>>> Cheers,
>>> Jonathan
>>>
>>> On 27 April 2018 at 11:58, Daniel Fuchs <daniel.fuchs at oracle.com 
>>> <mailto:daniel.fuchs at oracle.com>> wrote:
>>>
>>>     Hi Joe,
>>>
>>>     On the specification side, I think I would reword the API
>>>     documentation to first explain how the method checks the
>>>     content of the two files.
>>>
>>>     The fact that it doesn't check the actual content if
>>>     the two files are 'the same' is kind of an optimization.
>>>
>>>     So I would suggest to invert the order of the two paragraph
>>>     in the documentation, and combine them into one - something like:
>>>
>>>     1536      * <p>
>>>               * This method first calls {@link
>>>     #isSameFile(java.nio.file.Path, java.nio.file.Path)
>>>     isSameFile(path, path2)} to determine whether the two files are
>>>     the same.
>>>     1537      * If {@code isSameFile(path, path2)} returns false, this
>>>     method will proceed
>>>     1538      * to read the files and compare them byte by byte to
>>>     determine if they contain
>>>     1539      * the same contents.
>>>               * Otherwise, this method will return true without further
>>>               * processing.
>>>
>>>
>>>     On the implementation side I don't think it's reasonable to call
>>>     readAllBytes() and hold the content of the two files in memory
>>>     for comparing their content, especially if it's to discover that
>>>     the first byte differs.
>>>
>>>     Some lock-step reading of the two files would seem more 
>>> appropriate.
>>>
>>>     best regards,
>>>
>>>     -- daniel
>>>
>>>
>>>
>>>
>>>
>>>     On 27/04/2018 05:51, Joe Wang wrote:
>>>
>>>         Hi,
>>>
>>>         Considering extending isSameFile to add isSameContent to
>>>         Files. Please review.
>>>
>>>         JBS: https://bugs.openjdk.java.net/browse/JDK-8202285
>>> <https://bugs.openjdk.java.net/browse/JDK-8202285>
>>>
>>>         webrev:
>>> http://cr.openjdk.java.net/~joehw/jdk11/8202285/webrev/
>>> <http://cr.openjdk.java.net/%7Ejoehw/jdk11/8202285/webrev/>
>>>
>>>         specdiff:
>>> http://cr.openjdk.java.net/~joehw/jdk11/8202285/specdiff/java/nio/file/Files.html 
>>>
>>> <http://cr.openjdk.java.net/%7Ejoehw/jdk11/8202285/specdiff/java/nio/file/Files.html> 
>>>
>>>
>>>
>>>         Thanks,
>>>         Joe
>>>
>>>
>>>
>>
>



More information about the core-libs-dev mailing list