NIO.2中Path,Paths,Files类的使用
Java NIO
Java NIO概述
Java NIO(New IO(新io),Non-Blocking IO(非阻塞的io))是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的),基于通道的IO操作。NIO将以更高效的方式进行文件的读取操作。
Java API中提供两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
--->java.nio.channels.Channel(通道)
--->FileChannel:处理本地文件
--->SocketChannel:TCP网络编程的客户端的Channel
--->ServerSocketChannel:TCP网络编程的服务器端Channel
--->DatagramChannel:UDP网络编程中发送端和接收端的Channel
NIO.2
随着JDK 7 的发布,Java对NIO进行极大的扩展,增强了对文件处理和文件系统特性的支持,以至于我们称他们为NIO.2
因为NIO提供的一些功能,NIO已经称为文件处理中越来越重要的部分。
NIO.2中Path,paths,Files类的使用
早期的Java只提供一个file类来访问文件系统,但file类的功能比较有限,所提供的方法性能也不高。而且,大多数方法出错时仅返回失败,并不会提供异常信息。
NIO.2为了弥补这种不足,引入Path接口,代表一个平台无关的平台路径,描述了目录结构文件的位置。Path可以看成file类的升级版本,实际引用的资源也可以不存在。
在以前IO操作都是这样写的:
import java.io.File;
File file = new File("index.html");
但是在Java7中,我们可以这样写:
import java.nio.file.Path;
import java.nio.file.Paths;
Path path = Paths("index.html");
同时,NIO.2在java.nio.file 包下提供了Files,Paths工具类,Files包含了大量静态的工具方法来操作文件:Paths则包含了两个返回Path的静态工厂方法。
Paths类体提供的静态get()方法来获取Path对象:
static Path get(String first,String ... more); //用于将多个字符串串联成路径
Static Path get(URL uri); //返回指定的uri对应的Path路径
Path接口
Path常用方法
String toString(); //返回调用Path对象的字符串表示形式
boolean startsWith(String path); //判断是否以path路径开始
boolean endsWith(Strng path); //判断是否以path路径结束
boolean isAbsolute(); //判断是否是绝对路径
Path getParent(); //返回Path对象包含整个路径,不包含Path对象指定的文件路径
Path getRoot(); //返回调用Path对象的根路径
Path getFileName(); //返回与调用Path对象关联的文件名
int getNameCount(); //返回Path根目录后面元素的数量
Path getName(int idx); //返回指定索引位置idx的路径名称
Path toAbsolutePath(); //作为绝对路径返回调用Path对象
Path resolve(Path p); //合并两个路径,返回合并后的路径对应的Path对象
File toFile(); //将Path转换为File类对象
Files
java.nio.file.Files 用于操作文件或目录的工具类。
Files常用方法:
Path copy(Path src,Path dest,CopyOption ... how); //文件的赋值
Path createDirectory(Path path,FileAttribute<?> ... attr); //创建一个目录
Path createFile(Path path,FileAttribute<?> ... arr); //创建一个文件
void delete(Path path); //删除一个文件/目录,如果不存在,执行报错
void deleteIfExists(Path path); //Path对应的文件/目录如果存在,执行删除
Path move(Path src,Path dest,CopyOption ... how); //将src移动到dest位置
long size(Path path); //返回path指定文件的大小
Files常用方法:用于判断
boolean exists(Path path,LinkOption ... opts); //判断文件是否存在
boolean isDirectory(Path path,LinkOption ... opts); //判断是否是目录
boolean isRegularFile(Path path,LinkOption ... opts); //判断是否是文件
boolean isHidden(Path path); //判断是否是隐藏文件
boolean isReadable(Path path); //判断文件是否可读
boolean isWritable(Path path) ; //判断文件是否可写
boolean notExists(Path path,LinkOption ... opts); //判断文件是否不存在
Files常用方法:用于操作内容
SeekableByteChannel newByteChannel(Path path,OpenOption ... how); //获取与指定文件的连接,how指定打开方式。
DirectoryStream<Path> new DirectoryStream(Path path); //打开path指定的目录
InputStream newInputStream(Path path,OpenOption ... how); //获取InputStream对象
OutputStream newOutputStream(Path path,OpenOption ... how); //获取OutputStream对象
NIO.2中Path,Paths,Files类的使用的更多相关文章
- NIO前奏之Path、Files、AsynchronousFileChannel
NIO前奏之Path.Files.AsynchronousFileChannel Java 1.4加入了nio包,Java 1.7 加入了真正的AIO(异步IO),AsynchronousFile ...
- JAVA基础知识之NIO.2——Path,Paths,Files
NIO.2 JDK7对NIO进行了重大改进,主要包含以下两方面 新增Path接口,Paths工具类,Files工具类. 这些接口和工具类对NIO中的功能进行了高度封装,大大简化了文件系统的IO编程. ...
- JAVA NIO学习四:Path&Paths&Files 学习
今天我们将学习NIO 的最后一章,前面大部分涉及IO 和 NIO 的知识都已经讲过了,那么本章将要讲解的是关于Path 以及Paths 和 Files 相关的知识点,以对前面知识点的补充,好了言归正传 ...
- Java NIO之拥抱Path和Files
Java面试通关手册(Java学习指南)github地址(欢迎star和pull):https://github.com/Snailclimb/Java_Guide 历史回顾: Java NIO 概览 ...
- NIO.2中Path、 Paths、Files类的使用
- 详解 Paths类 与 Files类
在本篇博文中,本人主要讲解NIO 的两个核心点 -- 缓冲区(Buffer) 和 通道 (Channel)之一的 缓冲区(Buffer), 有关NIO流的其他知识点请观看本人博文<详解 NIO流 ...
- JAVA nio 2 和 Path 类简介
想要初步了解 NIO.2 API,也就是通常所说的“JSR203: More New I/O APIs for the Java Platform”,最好的切入点就是新的抽象类 java.nio.fi ...
- Java NIO学习(Path接口、Paths和Files工具类的使用)
NIO学习:Paths和Files工具类的使用 JDK1.7引入了新的IO操作类.在java.nio.file包下,Java NIO Path接口和Files类. Path接口:Path表示的是一个目 ...
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
随机推荐
- Python从零开始编写控制程序(一)
Python之从零开始编写控制程序(一) 在此声明:本博客仅供学习参考,任何产生相关违法犯罪行为与本人无关. 另外如果有师傅有好的思路和想法,可以和我一起沟通交流. 最近在一直尝试做Powershel ...
- Android程序员如何通过跳槽薪资翻倍?
马爸爸总结了一句话:跳槽,要么是钱不到位,要么是受了委屈. 我给自己这次的跳槽经历做了一个分析,希望能对那些想换工作的朋友有所帮助. 许多朋友想换工作,但是对"换工作"的理解可能仅 ...
- CYPEESS USB3.0程序解读之---同步FIFO(slaveFifoSync)
上一篇文章解读了CYPRESS FX3的GPIO的操作过程,下面解读同步FIFO的一个例子(slaveFifoSync). *生产者,消费者. 1.首先看DMA的回调函数(cyu3dma.h): ty ...
- 安鸾CTF Writeup wordpress 01
题目一: wordpress 01 URL:http://whalwl.site:8041/ wordpress 站思路就是先用wpscan 进行扫描检测一遍. wpscan 使用方法可以参考两篇文章 ...
- tomcat下载、安装及配置
一,下载Tomcat 1.进入官网Http://tomcat.apache.org/,选择download,下载所需要的Tomcat版本. 注意有zip和exe两种格式的 zip(64-bit Win ...
- Innodb中怎么查看锁信息
一.前言 上一篇说了下innodb中锁的大概意思, 这篇说说怎么查看加的哪些锁.不然后续出现死锁或者锁等待都不知道为什么. 二.底层基础表信息 在学会如何查看有哪些锁信息时, 需要了解一些基础表信息, ...
- logmein逆向
IDA打开整体先看看. 学个函数: strcpy:即字符串复制 v8=这么一大串字符串 我们让程序调到sub_4007F0(),就OK. 我们使用python来写, 主要迷惑的还是下面都是情深深雨蒙蒙 ...
- 计算文件的MD5值和sha256值
1.计算文件的MD5值. 1)linux系统计算 MD5值:md5sum+文件名 sha256值:sha256su+文件名 2)windows系统计算 MD5值:利用Notepad++工具计算 sha ...
- CGO入门和OCR文字识别(非第三方API,有源码,效果好)实战
这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战 系列文章见: [第四天] GDB调试指南:C++中如何调试生产环境的程序? [第三天] IM敏感词算法原理和实现 [第二天] 现代IM架构研 ...
- Intellj IDEA 光标显示insert状态解决办法
使用idea过程中,不知道怎么回事,鼠标的光标老是insert状态,体验效果极其差劲,于是去百度,扒拉了好一阵,过滤了垃圾博客,发现了有两种方法可以解决此问题: 第一种方法: 在File------& ...