已经建议通过JDK-8202285将名为isSameContents()
方法添加到JDK 11中的Files类中[[(fs)向文件中添加用于比较文件内容的方法”]。 由Joe Wang提议 ,此新方法“打算是现有isSameFile方法的扩展,因为它没有比较内容以回答两个文件是否相等的查询。” JDK-8201276还引用了此方法,并将其描述为“比较两个文件的实用程序方法”。
关于此新方法的用法, JDK-8202285的Description指出: 提出了一个新的Files
方法isSameContent
。 Files
当前具有名为isSameFile
的方法,该方法回答有关两个文件是否为同一文件的查询。 由于包含相同内容的两个文件也可能被视为相同,因此希望添加一种进一步比较内容的方法,以使“相同文件”查询完成。
关于此线程的OpenJDK core-libs-dev邮件列表讨论提供了有关此新方法的背景,动机和实现的更多详细信息。 例如,此线程上有执行以下操作的消息:
- 询问该方法是否应命名为
haveSameContents()
- 解释
isSameContent()
的选择 ,以“将其堆叠在现有的isSameFile方法旁边,因为它是对该方法的扩展” - 指出String类已经选择单数形式的 “内容”而不是复数形式的“内容”
- 如果要比较的
Path
相等,则强调isSameFile(Path,Path)方法“在不检查文件是否存在的情况下返回true
” - 声明将文件内容读入
String
的最常见用例之一是“快速读取小文件”并引用Files.readString() 。
该线程中特别有见地的消息是RémiForax消息, 该 消息提供了代码,演示如何使用添加了JDK 9的InputStream.transfer(OutputStream)方法,添加了JDK 10的局部变量类型推断以及类MessageDigest和DigestOutputStream来哈希内容用六行Java代码编写文件。
除了JEP和JDK 11随附的其他更重要的功能外,JDK 11还将提供几种新的有用的“实用程序”方法。
翻译自: https://www.javacodegeeks.com/2018/05/new-jdk-11-files-method-issamecontent.html