JDK 12为Files类引入了一种新方法。该 Files.mismatch(Path,Path)
方法已通过JDK-8202302引入JDK 12,并在JDK 12 Early Access Build 20中提供(同样的早期访问构建支持新的{@systemProperty} Javadoc标记)。
JDK-8202302 [“(fs)用于比较文件的新Files.mismatch方法”]添加Files.mismatch(Path,Path)
方法“比较两个文件的内容以确定它们之间是否存在不匹配”,并可用于确定“两个文件是否是等于。” 曾经有人谈过添加Files.isSameContent()方法,但Files.mismatch(Path,Parh)
由于其与Arrays.mismatch和Buffer.mismatch方法的一致性,决定使用它。
下一个代码清单包含一个简单的Java类,它演示了新的,Files.mismatch(Path,Path)
并将其与Files.isSameFile(Path,Path)进行了对比。
包 尘。例子。jdk12。档案 ;
导入 java。nio。档案。档案 ;
导入 java。nio。档案。路径 ;
import static java。郎。系统。出 ;
/ **
*演示JDK 12引入的{@code Files.mismatch(Path,Path)}
*用于确定两个文件是否具有相同的内容
*如果他们不是相同的文件。
* /
公共 类 FilesDemo
{
public static void main(final String [] arguments)抛出 异常
{
if(参数。长度 < 2)
{
出。println(“USAGE:FilesDemo <file1Name> <file2Name>”);
回归 ;
}
final String file1Name = arguments [ 0 ];
final path file1Path = Path。of(file1Name);
final String file2Name = arguments [ 1 ];
final path file2Path = Path。of(file2Name);
出。println(“\ nFiles'” + file1Name + “'和'” + file2Name + “'是”
+(文件。isSameFile(file1Path,file2Path)? “的”:“不是”)
+ “相同。\ n \ n”);
出。println(“\ nFiles'” + file1Name + “'和'” + file2Name + “'是”
+(文件。不匹配(file1Path,file2Path)== - 1 ? “”“:”不是“)
+ “相同的内容。\ n \ n”);
}
}
当针对各种文件组合执行上述代码时,它提供在下一个表中捕获的结果。
文件关系 Files.isSameFile(Path,Path)Files.mismatch(Path,Path)
另外 Files.mismatch(Path,Path)
一个步骤是完成JDK-6852033 [“输入/输出方法使常见的I / O任务变得容易”],并且更容易确定两个不同文件的文件何时仍然“相等”或者拥有相同的内容。