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/ ...
随机推荐
- linux学习18 shell脚本基础-bash变量和逻辑运行
一.回顾 1.用户管理,权限管理,install,mktemp 2.用户管理: 3.权限管理: mode,ownership mode: user group other r w x 4.命令:ins ...
- Python实现电子词典(web)
思路: 准备配置文件setting.py,运行src/data.py,使用MySQL新建数据库并创建table,将字典数据导入到table中.编写server.py文件,建立服务端,循环接收web请求 ...
- ASP.NET Core 简介
.NET Core 是 .NET Framework 的新一代版本,是微软开发的第一个具有跨平台 ( Windows.Mac OSX .Linux ) 能力的应用程序开发框 ASP.NET Core ...
- haproxy 配置文件详解 之 defaults
配置示例: defaults mode http retries timeout connect 10s timeout client 20s timeout server 30s timeout c ...
- .NET三层架构开发初步
转自:https://www.cnblogs.com/weilengdeyu/archive/2013/01/04/2844847.html 今天咱们来谈下三层架构.说到三层架构,搞过点程序的可能都知 ...
- Spring Security教程(二)
上一篇博客中,Spring Security教程(一),我把用户信息和权限信息放到了xml文件中,这是为了演示如何使用最小的配置就可以使用Spring Security,而实际开发中,用户信息和权限信 ...
- dnsperf
github 地址:https://github.com/DNS-OARC/dnsperf mac安装:brew install dnsperf 参数详解 Dnsperf 支持下面的这些命令行参数: ...
- just the check 买单
今日焦点 Just the check 买单吧 split it 平分 leave a tip 留小费 词汇实践 hey. Can I get you anything else today? 您好. ...
- AQS4源码
@SuppressWarnings("restriction") public abstract class AbstractQueuedSynchronizer1 extends ...
- thinkphp5的钩子怎么用
1.创建钩子行为 我们自己定义的标签位可以直接放在Think\Behaviors中,也可以放在应用目录中,比如说Home模块下,新建一个Behaviors的文件夹,在文件夹内新建: 标签名+Behav ...