Java 7 NIO.2学习(Ing)
Path类
1、Path的基本用法
Path代表文件系统中的位置,即文件的逻辑路径,并不代表物理路径,程序运行的时候JVM会把Path(逻辑路径)对应到运行时的物理位置上。
package com.javadu.common;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Created by duqi on 15/9/8.
*/
public class App {
public static void main(String[] args) {
//创建Path对象
Path listing = Paths.get("/usr/bin/zip");
//获取Path代表的文件(或目录)名字
System.out.println("File Name [" + listing.getFileName() +"]");
//获取路径中名称元素的数量
System.out.println("Number of Name Elements in the Path [" + listing.getNameCount() + "]");
//获取当前路径的父路径
System.out.println("Parent Path [" + listing.getParent() +"]");
//获取当前路径的根目录
System.out.println("Root Path [" + listing.getRoot() +"]");
//获取从当前路径的根目录(0)到其第二个元素(2)之间的子路径
System.out.println("Subpath from Root, 2 elements deep [" + listing.subpath(0,2) +"]");
}
}
上述程序的输出结果如下:
2、利用Path移除冗余项
- 利用normalize()方法可以去掉Path中的冗余信息,例如给定”./App.java”,如果直接使用
Paths.get("./App.java").getFileName();
会找不到这个文件,必须得使用normalize()方法将冗余信息去掉。 - 利用toRealPath()方法可以检测出符号链接并解析出真正的路径。例如在我的家目录下有.zshrc文件,这个文件其实是个符号链接文件,表示如下,它的真实路径是“/Users/duqi/.zprezto/runcoms/zshrc”
查看下面代码:
package com.javadu.common;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Created by duqi on 15/9/8.
*/
public class App {
public static void main(String[] args) {
//去除冗余信息
Path normalizedPath = Paths.get("./App.java").normalize();
System.out.println(normalizedPath);
//处理符号链接,取得真实路径
try {
Path realPath = Paths.get("/Users/duqi/.zshrc").toRealPath();
System.out.println(realPath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
对应的执行结果是:
3、向后兼容
(1)java.io.File类中增加了toPath()方法,可以把已经有的File转换为新的Path;
(2)Path类中有个toFile()方法,可以把现有的Path转换为File对象。
处理目录和目录树
文件系统I/O
异步IO
Java 7 NIO.2学习(Ing)的更多相关文章
- java BIO/NIO/AIO 学习
一.了解Unix网络编程5种I/O模型 1.1.阻塞式I/O模型 阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误 ...
- Java:NIO 学习笔记-3
Java:NIO 学习笔记-3 根据 黑马程序员 的课程 JAVA通信架构I/O模式,做了相应的笔记 3. JAVA NIO 深入剖析 在讲解利用 NIO 实现通信架构之前,我们需要先来了解一下 NI ...
- Java:NIO 学习笔记-2
Java:NIO 学习笔记-2 上一篇 NIO 学习笔记-1 看了 尚硅谷 的相应教程,此处又对比看了 黑马程序员 的课程 JAVA通信架构I/O模式,做了相应的笔记 前言 在 Java 的软件设计开 ...
- Java:NIO 学习笔记-1
Java:NIO 学习笔记-1 说明:本笔记是根据bilibili上 尚硅谷 的课程 NIO视频 而做的笔记 主要内容 Java NIO 简介 Java NIO 与 IO 的主要区别 缓冲区(Buff ...
- 一个小时就能理解Java的NIO必须掌握这三大要素!
同步与阻塞 同步和异步是针对应用程序和内核的交互而言的. 同步:执行一个操作之后,进程触发IO操作并等待(阻塞)或者轮询的去查看IO的操作(非阻塞)是否完成,等待结果,然后才继续执行后续的操作. 异步 ...
- 20155318 2016-2017-2 《Java程序设计》第九学习总结
20155318 2016-2017-2 <Java程序设计>第九学习总结 教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型 ...
- Tinking in Java ---Java的NIO和对象序列化
前面一篇博客的IO被称为经典IO,因为他们大多数都是从Java1.0开始就有了的:然后今天这篇博客是关于NIO的,所以的NIO其实就是JDK从1.4开始,Java提供的一系列改进的输入/输出处理的新功 ...
- 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别
1.引言 很多初涉网络编程的程序员,在研究Java NIO(即异步IO)和经典IO(也就是常说的阻塞式IO)的API时,很快就会发现一个问题:我什么时候应该使用经典IO,什么时候应该使用NIO? 在本 ...
- 3. 彤哥说netty系列之Java BIO NIO AIO进化史
你好,我是彤哥,本篇是netty系列的第三篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 上一章我们介绍了IO的五种模型,实际上Java只支持其中的三种,即BIO/NIO/ ...
随机推荐
- css 布局 一中一右
.container { position: relative; .my-center { text-align: center; line-height: 30rpx; min-width: 400 ...
- SparkSQL 中 RDD 、DataFrame 、DataSet 三者的区别与联系
一.SparkSQL发展: Shark是一个为spark设计的大规模数据仓库系统,它与Hive兼容 Shark建立在Hive的代码基础上,并通过将Hive的部分物理执行计划交换出来(by s ...
- Android 开发基础入门篇: 复制一个工程作为一个新的工程
说明 咱们做项目很多时候都需要复制一份工程出来作为一个新的工程 把第一节的工程拷贝到这一节 修改工程名字 打开软件导入此工程 修改包名 第一节的时候说了,一个APP一个包名 自行添加修改 自行修改 自 ...
- 【BigData】Java基础_方法的定义与使用
1.概念 Java语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function).对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代 ...
- Golang(二)基本概念
类型 18个基本类型:bool.string.rune.byte.int.uint.int8.uint.int8.int16.uint16.int32.uint32.int64.uint64.floa ...
- mysql5.7报错ERROR 1819解决办法
MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格. 使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置.影响的语句和 ...
- 四元数, Physx中的四元数
四元数的概念 & 如何使用四元数: 绕V轴旋转 f 角,对应的四元数: q = ( cos(f/2), Vx*sin(f/2), Vy*sin(f/2), Vz*sin(f/2) ) = c ...
- Docker图形化工具——Portainer
目标搭建docker-ui 一.Docker图形化工具 docker 图形页面管理工具常用的有三种,DockerUI ,Portainer ,Shipyard .DockerUI 是 Portaine ...
- 用ab每隔30分钟并发一次休息10分钟
linux脚本监控程序运行情况(重启程序)主要有两种情况:一种是一个可执行文件:如shell脚本文件:另一种是使用python打开的多个程序.第一种:它的进程名字由路径名字和程序名字组成,比如:我有个 ...
- CF573E Bear and Bowling 贪心、分块、凸包
传送门 题解搬运工++ 先证明一个贪心做法的正确性:做以下操作若干次,每一次考虑选择没有被选到答案序列中的数加入到答案序列中对答案的贡献,设第\(i\)个位置的贡献为\(V_i\),如果最大的贡献小于 ...