JAVA NIO:Path ,File
2016-03-04 17:22
447 查看
JAVA NIO path
参考地址:http://tutorials.jenkov.com/java-nio/path.htmlJAVA NIO Path为JAVA 7中JAVA NIO新增的接口。完整包名为: java.nio.file.Path
JAVA PATH指向的是文件系统里的一个路径,可以指向文件,也可以指向目录,可以用绝对路径表示,也可以用相对路径表示。
注:java.nio.file.Path接口与文件系统中环境变量path无关。
Java NIO path实例创建**
通过java.nio.file.Paths.get()方法即可创建Path实例。 可通过绝对路径创建:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//通过绝对路径创建,windows os</span> Path path=Paths.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"D://test/test.txt"</span>); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//通过绝对路径创建,linux</span> Path path1=Paths.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"/home/opt/app/test/test.txt"</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
如果windows环境下以绝对路径创建时,以/开头,如:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">/home/jakobjenkov/myfile.txt</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
创建path实例时会解析在前面加上磁盘所在目录,即,解析成:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">C:/home/jakobjenkov/myfile.txt</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
也可以通过相对路径创建,通过Paths.get(basePath, relativePath)方法,
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//全路径为d:\\data\\projects </span> Path projects = Paths.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"d:\\data"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"projects"</span>); <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//全路径为d:\\data\projects\\a-project\\myfile.txt</span> Path file = Paths.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"d:\\data"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"projects\\a-project\\myfile.txt"</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
. 与 ..
. 表明当前目录 .. 表明上级目录
如
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">Path currentDir = Paths.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"d:\\data\\projects\.\a-project"</span>);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
指明的路径为:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">d:\data\projects\a-project </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">String path = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"d:\\data\\projects\\a-project\\..\\another-project"</span>;</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
指明的路径为:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">d:\\data\\projects\\another-project</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
Path.normalize()
格式化path,即移除路径中的 . 与 .., 如:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> String originalPath =<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"d:\\data\\projects\\a-project\\..\\another-project"</span>; Path path1 = Paths.get(originalPath); System.out.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"path1 = "</span> + path1); Path path2 = path1.normalize(); System.out.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"path2 = "</span> + path2);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>
输出为:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">path1 = d:\data\projects\a-project\..\another-project path2 = d:\data\projects\another-project</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
path2会移除..
JAVA NIO Files
完整包名java.nio.file.Files,与java.nio.file.Path 一起使用。 介绍几个基本的方法,其他方法参考javaDoc
Files.exists()
根据给定的path判断文件是否存在。<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> exists(Path path, LinkOption… options)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
示例如下:
<code class="language-java hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">Path path=java.nio.file.Paths.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"data/logging.properties"</span>); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> pathExists=java.nio.file.Files.exists(path, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> LinkOption[]{ LinkOption.NOFOLLOW_LINKS});</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
通过Files.exist()方法判断路径是否存在时,必须先指定一个Path实例。默认情况下符号链接会被追踪。
第二个参数是一个LinkeOption数组,决定文件是否存在。LinkOption.NOFOLLOW_LINKS表明不追踪符号链接。如果目录或文件存在,则返回true,如果目录或文件不存在或者不知道其存在性,则返回false。
在对文件进行操作前,需要调用exists()来判断文件是否存在。
Files.noExist()
根据给定的path判断文件是否不存在。boolean notExists(Path path, LinkOption… options) 默认情况,符号链接是会跟从的。但是
相关文章推荐
- 【集合框架】Java集合框架综述
- struts2学习笔记----action配置的各项默认值
- java自定义异常
- JMeter二次开发(1)-eclipse环境配置及源码编译
- 基于Freemarker的eclipse plugin代码生成器插件开发
- 基于注解SpringMVC+freemarker实例
- java学习---访问权限控制
- Java定位CPU使用高问题--转载
- java string与byte互转
- java集合类——Stack类
- SpringMVC使用@ResponseBody时返回json的日期格式
- java内存溢出和内存泄露
- Spring Cache
- 关于从eclipse部署已经发布到Android studio的坑
- 注释驱动的 Spring cache 缓存介绍
- java快速排序,优化
- Java多线程之wait()、notify()、notifyAll()
- Java 多线程(二)——创建线程(Thread、Runnable、Callable)
- Eclipse启动异常:Java was started but returned exit code=13
- java string 首字母大写方法