前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java nio:Files.isSameFile判断两个路径(Path)是否相等

java nio:Files.isSameFile判断两个路径(Path)是否相等

作者头像
10km
发布2018-01-03 11:58:43
1.4K0
发布2018-01-03 11:58:43
举报
文章被收录于专栏:10km的专栏10km的专栏

不论在windows还是linux下,仅凭字符串比较判断两个文件路径是否相等是不靠谱的。因为有link,Disk map等技术的存在,两个不同的路径有可能指向同一个文件。 NIO提供了Files.isSameFile方法可以准确判断两个路径是否指向同一个文件/文件夹. 以下示例是利用Files.isSameFile方法判断一个文件/文件夹是否为在另一个文件夹下的方法。

代码语言:javascript
复制
    /**
     * 判断sub是否与parent相等或在其之下<br>
     * parent必须存在,且必须是directory,否则抛出{@link IllegalArgumentException}
     * @param parent 
     * @param sub
     * @return
     * @throws IOException 
     */
    public static boolean sameOrSub(Path parent,Path sub) throws IOException{
        if(null==parent)
            throw new NullPointerException("parent is null");
        if(!Files.exists(parent)||!Files.isDirectory(parent))
            throw new IllegalArgumentException(String.format("the parent not exist or not directory %s",parent));
        while(null!=sub) {
            if(Files.exists(sub)&&Files.isSameFile(parent, sub))
                return true;
            sub=sub.getParent();
        }
        return false;   
    }
    /**
     * 判断sub是否在parent之下的文件或子文件夹<br>
     * parent必须存在,且必须是directory,否则抛出{@link IllegalArgumentException}
     * @param parent
     * @param sub
     * @return
     * @throws IOException
     * @see {@link #sameOrSub(Path, Path)}
     */
    public static boolean isSub(Path parent,Path sub) throws IOException{
        return (null==sub)?false:sameOrSub(parent,sub.getParent());
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年01月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档