`
cucaracha
  • 浏览: 137993 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:85973
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:35733
社区版块
存档分类
最新评论

[NIO.2] 第八篇 比较两个 Path 对象

阅读更多
为了不同的目的,你可以使用不同的方式来比较两个 Path 对象是否相等。

首先,你可以调用 Path.equals() 方法来进行判断,这个方法遵守 Object.equals() 方法规范。这个方法不会访问实际的文件系统,因此所比较的两个路径可以不用真实存在。这个方法也不会确认两个路径是否指向同一个文件。在一些操作系统中,比较两个路径的时候是大小写忽略的,而在有的系统中,比较两个路径又是大小写敏感的——这要具体情况具体考虑。

下面的例子演示了相对路径 Path 和绝对路径 Path 之间比较的结果,它们指向同一个文件,但是 equals() 结果为 false:

Path path01 = Paths.get("/rafaelnadal/tournaments/2009/BNP.txt"); 
Path path02 = Paths.get("C:/rafaelnadal/tournaments/2009/BNP.txt"); 
         
if(path01.equals(path02)){ 
    System.out.println("The paths are equal!"); 
} else { 
    System.out.println("The paths are not equal!"); //true 
} 


有的时候,你可能想要判断两个 Path 对象是否指向同一个文件或文件夹。那么你可以调用 java.nio.File.Files.isSameFile() 方法来进行判断。这个方法的具体实现调用了 Path.equals() 来进行判断,如果返回 ture ,则这个方法返回 true ,如果返回 false ,则需要再做二次确认。值得注意的是,这个方法要保证文件是真实存在的,否则会抛出 IOException。

try { 
    boolean check = Files.isSameFile(path01, path02); 
    if(check){ 
        System.out.println("The paths locate the same file!"); //true 
    } else { 
        System.out.println("The paths does not locate the same file!"); 
    } 
} catch (IOException e) { 
    System.out.println(e.getMessage()); 
} 

Path 对象实现了 Comparable 接口,因此可以调用 compareTo() 方法来比较两个 Path 对象。这个方法将会比较两个抽象路径的字典顺序,这在需要排序的时候会很有用。如果结果小于 0 ,表示当前 Path 对象的字典顺序小于方法参数中的 Path 对象的字典顺序,如果结果等于 0 ,表示两个 Path 对象的字典顺序相等,如果结果大于 0 ,表示当前 Path 对象的字典顺序大于方法参数中 Path 对象的字典顺序。下面是例子:

//output: 24 
int compare = path01.compareTo(path02); 
System.out.println(compare);


如果需要进行局部比较,可以调用 startsWith() 和 endsWith() 方法,就像下面例子中演示的一样,使用这两个方法可以判断当前 Path 对象开始于或结束于某个字符串:

boolean sw = path01.startsWith("/rafaelnadal/tournaments"); 
boolean ew = path01.endsWith("BNP.txt"); 
System.out.println(sw);  //output:  true 
System.out.println(ew);  //output:  true 


文章来源:http://www.aptusource.org/2014/03/nio-2-comparing-two-paths/
0
0
分享到:
评论

相关推荐

    Java IO, NIO and NIO.2(Apress,2015)

    Java I/O, NIO, and NIO.2 is a power-packed book that accelerates your mastery of Java's various I/O APIs. In this book, you'll learn about classic I/O APIs (File, RandomAccessFile, the stream classes ...

    java NIO.zip

    java NIO.zip

    Java IO, NIO and NIO.2 原版pdf by Friesen

    New I/O (NIO), and NIO.2 categories. You learn what each category offers in terms of its capabilities, and you also learn about concepts such as paths and Direct Memory Access. Chapters 2 through 5 ...

    Java IO, NIO and NIO.2

    这是一本介绍java io以及nio相关知识的书,书中对知识的讲解通俗易懂,是学习java nio以及复习java io相关知识的必备书籍。注意:本书为英文版!!!

    java nio.pdf

    java nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava ...

    Java NIO.pdf

    Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf Java NIO.pdf

    Apress.Pro.Java.7.NIO.2.2011

    Apress.Pro.Java.7.NIO.2.2011

    蔚来-NIO.US-新车上市,蔚来可期.pdf

    蔚来-NIO.US-新车上市,蔚来可期.pdf

    Pro Java 7 NIO.2

    This book covers all the important aspects involved in developing NIO.2-based applications. It provides clear instructions for getting the most out of NIO.2 and offers many exercises and case studies ...

    ProJava7NIO.2PDFBooks.pdf 英文原版

    Pro Java 7 NIO.2 – PDF Books

    Java NIO 中英文版 + Pro Java 7 NIO.2

    Java NIO,Ron Hitchens 著,中文版 裴小星 译,Pro Java 7 NIO.2,Anghel Leonard 著,pdf文字版带书签,无安全限制

    Pro Java 7 NIO.2.pdf

    Pro Java 7 NIO.2.pdf,2011 by Anghel Leonard

    java.io:clojure.java.io 的 JK7 java.nio.file.Path 兼容性

    java.io clojure.java.io 的 JK7 java.nio.file.Path 兼容性依赖信息该库托管在 Releases 上。 依赖: [me.moocar/java.io " 0.1.0 " ]用法是 JDK7 中引入的文件路径的抽象。 这个库提供了和 Paths 之间的兼容性。 ...

    JavaNIO.pdf

    JavaNIO.pdf

    Pro Java 7 NIO.2 原版pdf by Leonard

    This book covers all the important aspects involved in developing NIO.2-based applications. It provides clear instructions for getting the most out of NIO.2 and offers many exercises and case studies ...

    java org.apache.http.nio jar包

    找了好久,终于找到了,java刷新同步获取网络资源

    java nio.doc

    定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。  NIO API 的集中抽象为:  缓冲区,它们是数据容器;  字符集 及其相关解码器 和编码器,  它们在字节和 Unicode 字符之间进行转换;  各种类型的通道,...

    java_nio.doc

    用java.nio.*进行网络编程

    Java NIO.docx

    Java NIO.docx

Global site tag (gtag.js) - Google Analytics