那个平台能免费做网站,免费网站建立,深圳响应式网站公司,付给招聘网站的费用怎么做分录在本文的第1部分中#xff0c;我们研究了java.nio.file.Path类中的大多数API。 在本文中#xff0c;我们将介绍其余的API。 使用register#xff08;#xff09; 该API允许我们注册java.nio.file.WatchService接口的实现#xff0c;该接口将侦听目录创建#xff0c;修改… 在本文的第1部分中我们研究了java.nio.file.Path类中的大多数API。 在本文中我们将介绍其余的API。 使用register 该API允许我们注册java.nio.file.WatchService接口的实现该接口将侦听目录创建修改和删除等事件。 并且它通过java.nio.file.WatchKey来激发侦听器。 我想为此API撰写另一篇文章因为它涉及Java 7中引入的另一个新功能。 使用resolve 此方法处理两个Path实例。 调用此方法的一个实例resolve方法将另一个实例作为参数传递。 参数可以是Path实例也可以是表示路径的字符串 。 此方法针对此路径解析另一条路径。 解决方法如下 如果另一个路径是绝对路径则它将返回另一个路径。 因为可以使用绝对路径来到达其他路径。 如果另一个路径是相对路径则另一个路径将附加到此路径。 例如 Path path Paths.get(src, main, resources);
Path other Paths.get(blogsamples);assertThat(path.resolve(other)).isEqualTo(Paths.get(src, main, resources, blogsamples)); 下面的测试中给出了可以调用此方法的不同方案 Test
public void testResolved() throws IOException {Path path Paths.get(src, main, resources);Path other Paths.get(blogsamples);assertThat(path.resolve(other)).isEqualTo(Paths.get(src, main, resources, blogsamples));other Paths.get(/Users);assertThat(path.resolve(other)).isEqualTo(Paths.get(/Users));path Paths.get(/src, main, resource);assertThat(path.resolve(/Users)).isEqualTo(Paths.get(/Users));
}使用resolveSibling 此方法与resolve类似不同之处在于它认为此路径的父级可以解析另一个路径。 同样我在下面的测试中捕获了不同的可能性 Test
public void testResolveSibling(){Path path Paths.get(src, main, resources, test1);Path other Paths.get(test2);//both paths are not absoluteassertThat(path.resolveSibling(other)).isEqualTo(Paths.get(src, main, resources, test2));//other path is absoluteassertThat(path.resolveSibling(/test2)).isEqualTo(Paths.get(/test2));//this path has no parentpath Paths.get(/);assertThat(path.resolveSibling(/test2)).isEqualTo(Paths.get(/test2));//the other path is empty and this path has no parentassertThat(path.resolveSibling()).isEqualTo(Paths.get());//the other path is empty and this path has parentpath Paths.get(src, main, resources, test1);assertThat(path.resolveSibling()).isEqualTo(Paths.get(src, main, resources));
}使用relativize 此方法返回一个相对路径该相对路径在针对该路径解析时将返回另一个路径即作为参数传递的路径。 我试图在下面的测试中说明在尝试在两条路径之间创建相对路径时的不同可能性。 Path path Paths.get(src, main, resources, test1);
Path other Paths.get(test2);assertThat(path.relativize(other).toString()).isEqualTo(..\\..\\..\\..\\test2); 在上述情况下两条路径都是相对的。 它需要从src / main / resources / test1向后4跳才能到达/ test2。 通过应用相对论方法也可以得到相同的结果。 如果其中一个路径是绝对路径另一个路径是相对路径则调用relativize会导致IllegalArgumentException 如下所示 Test(expected IllegalArgumentException.class)
public void testRelativize_WithRelativeAndAbsolutePath(){Path path Paths.get(/src, main, resources, test1);Path other Paths.get(src, main, resources);path.relativize(other);
} 如果两个路径都是绝对路径则relativize的输出取决于实现。 以下测试是针对Windows平台上的JDK 8编写的 Test
public void testRelativize_WithAbsolutePaths(){Path path Paths.get(/src, main, resources, test1);Path other Paths.get(/src, main, resources, test1, test2);assertThat(path.relativize(other).toString()).isEqualTo(test2);
}使用startsWith 此方法检查startsWith方法所在的路径开头是否与作为参数传递的路径具有相同的名称元素。 并且作为参数传递的路径没有此路径中不存在的多余名称元素。 例如/ a / b / c以/ a / b开头a / b / c / d以a / b / c开头 让我们在调用该方法时查看不同的可能情况 Test
public void testStartsWith(){//both paths are absolutePath path Paths.get(/src, main, resources, test1);Path other Paths.get(/src, main, resources);assertThat(path.startsWith(other)).isTrue();/*both paths are absolute, where as the other path has more name elements */path Paths.get(/src, main, resources, test1);other Paths.get(/src, main, resources, test1, test2);assertThat(path.startsWith(other)).isFalse();//both paths are samepath Paths.get(/src, main, resources, test1);other Paths.get(/src, main, resources, test1);assertThat(path.startsWith(other)).isTrue();//either of them is relativepath Paths.get(src, main, resources, test1);other Paths.get(/src, main, resources, test1);assertThat(path.startsWith(other)).isFalse();//both of them are relativepath Paths.get(src, main, resources, test1);other Paths.get(src, main, resources);assertThat(path.startsWith(other)).isTrue();}翻译自: https://www.javacodegeeks.com/2017/09/getting-know-java-nio-file-path-2.html