关于NIO2的relativize的关键词使用
来源:互联网 发布:网络seo 编辑:程序博客网 时间:2024/06/12 14:48
可能是因为这个方法看起来没什么用,所以网上对该方法的描述有些草率,甚至觉得有点失望了。
我来记录一下吧。以便大家日后参考。
有两个Path对象,我们称之为p1和p2
Path p1 = Paths.get("C:\\Users\\Administrator");
Path p2 = Paths.get("C:\\False");
这两个Path对象的生成非常简单,直接路径一目了然。
好,往下走,我们来看看relativize会起到什么作用。
System.out.println(p2.relativize(p1));
System.out.println(p1.relativize(p2));
会有如下显示:
..\Users\Administrator
..\..\False
这是什么意思呢?国外通常会给relativize生成的对象给一个名称。
比如:Path p2ToP1 = p2.relativize(p1)
哇塞,英文好的话就豁然开朗了。没错,p2.relativize(p1)的意思就是:p2到p1(p2 to p1)怎么走的意思。
如果你会windows的命令行,在小黑窗里这么敲,首先,定位到C:\False文件夹,然后敲命令行 cd ..\Users\Administrator
那么命令行的当前位置就是,先移到上级路径(..表示上级路径),C:\False的上级路径是C:\ 根目录,然后移到下级的Users文件夹,再移到下级的Administrator文件夹。
同样,p1.relativize(p2)的意思就是:p1 to p2,从p1路径到p2路径该怎么走?
你可以在cmd里,先定位到C:\Users\Administrator,然后敲cd ..\..\False,即从Administrator文件夹移动到上级Users文件夹,再移动到上级C:\根目录下,再移到下级False文件夹。
~\(≧▽≦)/~啦啦啦 大功告成。怎么样,这样理解起来清爽多了吧。
需要注意的是,通过relativize所返回的都是相对路径,只反映p1和p2两个路径的相对位置,与他们的绝对位置无关。
也就是说:
Path p1 = Paths.get("C:\\Users\\Administrator");
Path p2 = Paths.get("C:\\False");
和
Path p3 = Paths.get("D:\\Yes\\Users\\Administrator");
Path p4 = Paths.get("D:\\Yes\\False");
这两种情况下,p1.relativize(p2))与p3.relativize(p4)) 这两个对象是一样的。
你甚至可以使用equals方法来判断两者是否相同。会返回true哦~
p1.relativize(p2));
import java.nio.file.Path;import java.nio.file.Paths;public class Rename {public static void main(String[] args) {Path p1 = Paths.get("C:\\Users\\Administrator");Path p2 = Paths.get("C:\\False");System.out.println(p2.relativize(p1));System.out.println(p1.relativize(p2));Path p3 = Paths.get("D:\\Yes\\Users\\Administrator");Path p4 = Paths.get("D:\\Yes\\False");System.out.println("***************************************");System.out.println(p4.relativize(p3));System.out.println(p3.relativize(p4));System.out.println("***************************************");System.out.println(p2.relativize(p1).equals(p4.relativize(p3)));System.out.println("***************************************");System.out.println(p2.relativize(p1).toAbsolutePath().normalize());System.out.println(p1.relativize(p2).toAbsolutePath().normalize());}}
另外呢,p2.relativize(p1).toAbsolutePath()表示相对路径转绝对路径后的结果,
p2 to p1,即p2如何走到p1? => ..\Users\Administrator
然后,这边在相对路径转绝对路径的时候,默认的基准点是当前项目所在位置,由该位置出发,走..\Users\Administrator后,会去到的地方。
比如,我的java工程建立在:C:\wspace\whatsmore,那么走..\Users\Administrator后,位置就到了C:\wspace\Users\Administrator
那么,你还会发现p2.relativize(p1).toAbsolutePath()会记录下你全部的行走轨迹,打印出来的结果是:C:\wspace\WhatsMore\..\Users\Administrator
就好像,你往前走了一步,又往后走了两步,这里会一一记录下来。
使用normalize()方法的话,即p2.relativize(p1).toAbsolutePath().normalize()则会告诉你,你实际上往后走了一步。即打印结果为:C:\wspace\Users\Administrator
基本上就这些吧,有新发现还会再补充。希望对大家有用。
- 关于NIO2的relativize的关键词使用
- 关于类的关键词
- params 关键词的使用
- static 关键词的使用
- volatile 关键词的使用
- volatile关键词的使用
- 关于页面关键词的密度
- 关于extern关键词的学习
- 关于网站关键词与页面关键词的个人看法
- 关于 sql语句的union 关键词
- 关于长尾关键词优化的实践
- 关于implicit和explicit关键词的用法
- 关于Java关键词Transient的理解
- 关于关键词抽取的一些思考
- 关于Java中intern关键词的疑惑
- 关键词的
- nio2
- nio2
- socket阻塞与非阻塞,同步与异步、I/O模型
- asp.net中的按钮在页面上有验证控件的时候不触发按钮事件
- 【Unix/Linux】【命令】【文本工具】文件/输出分页显示——more
- 四 序列容器
- 上班==任务
- 关于NIO2的relativize的关键词使用
- html的swf文件代码解析
- 浅拷贝、深拷贝
- Handler+Looper+MessageQueue深入详解
- VC++修改对话框颜色方法
- Clone Graph leetcode
- Cron表达式
- ListView的适配器模式
- 一个比较完整的Inno Setup 安装脚本