详解 Paths类 与 Files类
在本篇博文中,本人主要讲解NIO 的两个核心点 —— 缓冲区(Buffer) 和 通道 (Channel)之一的 缓冲区(Buffer),
有关NIO流的其他知识点请观看本人博文《详解 NIO流》
@
Path接口
概念:
java.nio.file.Path 接口代表一个平台无关的平台路径,描述了目录结构中文件的位置。
对象的获取手段:
Paths 提供的get()方法用来获取Path对象:
- Path get(String first,String… more): 用于将多个字符串串连成路径
常用API:
- boolean endsWith(String path) :
判断是否以 path 路径结束- boolean startsWith(String path) :
判断是否以 path 路径开始- boolean isAbsolute() :
判断是否是绝对路径- Path getFileName() :
返回与调用 Path 对象关联的文件名- Path getName(int idx) :
返回的指定索引位置 idx 的路径名称- int getNameCount() :
返回 Path 根目录后面元素的数量- Path getParent() :
返回 Path 对象包含整个路径,不包含 Path 对象指定的文件路径- Path getRoot() :
返回调用 Path 对象的根路径- Path resolve(Path p) :
将相对路径解析为绝对路径- Path toAbsolutePath() :
作为绝对路径返回调用 Path 对象- String toString() :
返回调用 Path 对象的字符串表示形式
那么,现在,本人再来讲解下 Files类:
Files类
概念:
java.nio.file.Files 用于操作文件或目录的工具类
由于 Files类 是一个工具类,它的常用API基本上都是static(静态)的,所以,我们不需要这个类的对象。
故本人在这里就不展示这个类的构造方法了。
现在,本人来展示下这个类的API:
常用方法:
- Path copy(Path src, Path dest, CopyOption … how) :
文件的复制- Path createDirectory(Path path, FileAttribute<?> … attr) :
创建一个目录- Path createFile(Path path, FileAttribute<?> … arr) :
创建一个文件- void delete(Path path) :
删除一个文件- Path move(Path src, Path dest, CopyOption…how) :
将 src 移动到 dest 位置- long size(Path path) :
返回 path 指定文件的大小- static Path write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options) :
可以将List集合中的数据写到文件中
用于判断:
- boolean exists(Path path, LinkOption … opts) :
判断文件是否存在- boolean isDirectory(Path path, LinkOption … opts) :
判断是否是目录- boolean isExecutable(Path path) :
判断是否是可执行文件- boolean isHidden(Path path) :
判断是否是隐藏文件- boolean isReadable(Path path) :
判断文件是否可读- boolean isWritable(Path path) :
判断文件是否可写- boolean notExists(Path path, LinkOption … opts) :
判断文件是否不存在- public static < A extends BasicFileAttributes> A readAttributes(Path path,Class< A > type,LinkOption...options) :
获取与 path 指定的文件相关联的属性。
用于操作内容:
- SeekableByteChannel newByteChannel(Path path, OpenOption…how) :
获取与指定文件的连接,how 指定打开方式。- DirectoryStream newDirectoryStream(Path path) :
打开 path 指定的目录- InputStream newInputStream(Path path, OpenOption…how):
获取 InputStream 对象
OutputStream newOutputStream(Path path, OpenOption…how) :
获取 OutputStream 对象
那么,现在本人来展示下 Path接口 和 Files类 的使用:
部分API使用展示
本人还是通过文件的复制来展示:
package edu.youzg.about_nio.core;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class FileCopy {
public static void main(String[] args) throws IOException {
//文件复制
Files.copy(Paths.get("plantsVSzombies.mp4"), Paths.get("test.mp4"), StandardCopyOption.REPLACE_EXISTING);
Files.copy(Paths.get("test.mp4"), new FileOutputStream("test2.mp4"));
//移动剪切文件
Files.move(Paths.get("test2.mp4"), Paths.get("G:\\test3.mp4"));
}
}
首先,本人来展示下源文件的信息:
现在,本人来展示下生成的文件的信息:
那么,可以看到,文件的复制和剪切都成功了!
(本人 NIO流 博文链接:https:////www.cnblogs.com/codderYouzg/p/12418765.html)
详解 Paths类 与 Files类的更多相关文章
- (转载)实例详解Android快速开发工具类总结
实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...
- SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架
1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...
- Java基础教程——File类、Paths类、Files类
File类 File类在java.io包中.io代表input和output,输入和输出. 代表与平台无关的文件和目录. 可以新建.删除.重命名,但不能访问文件内容. File类里的常量: impor ...
- Python之Metaclass详解,Python之元类
本人Java程序员一枚,这几天闲来无事就自学了下Python,学到Metaclass感觉有点迷惑,就在网上查相关资料,在栈溢出(stackoverflow)网站上看到一个关于metaclass的回答, ...
- Java IO流详解(二)——File类
在上一章博客中简单的介绍了Java IO流的一些特征.也就是对文件的输入输出,既然至始至终都离不开文件,所以Java IO流的使用得从File这个类讲起. File类的描述:File类是文件和目录路径 ...
- spring mvc DispatcherServlet详解之拾忆工具类utils
DispatcherServlet的静态初始化 /** * Name of the class path resource (relative to the DispatcherServlet cla ...
- Java入门(2) —— 变量详解、运算符、定义类和定义方法以及方法的调用
1.变量 1.定义变量 1.声明的同时直接赋值 数据类型 变量名 = 值; 2.先声明,后赋值 声明: 数据类型 变量名; 赋值: 变量名 = 值; 2.数据类型 基本数据类型:4类8种 整数 --- ...
- nodejs Async详解之二:工具类
Async中提供了几个工具类,给我们提供一些小便利: memoize unmemoize log dir noConflict 1. memoize(fn, [hasher]) 有一些方法比较耗时,且 ...
- 详解 Too many open files
运行在Linux系统上的Java程序可能会出现"Too many open files"的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景. 程序经常访问的文件.sock ...
随机推荐
- 【前端词典】这些功能其实不需要 JS,CSS 就能搞定
前言 今天我们大家介绍一些你可能乍一眼以为一定需要 JavaScript 才能完成的功能,其实 CSS 就能完成,甚至更加简单. 内容已经发布在 gitHub 了,欢迎围观 Star,更多文章都在 g ...
- Selenium系列(十一) - 针对两种上传文件方式的实现方案
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- OpenCV-Python 使用OCR手写数据集运行KNN | 五十四
目标 在本章中 我们将使用我们在kNN上的知识来构建基本的OCR应用程序. 我们将尝试使用OpenCV自带的数字和字母数据集. 手写数字的OCR 我们的目标是构建一个可以读取手写数字的应用程序.为此, ...
- SVM多核学习方法简介
作者:Walker SVM是机器学习有监督学习的一种方法,常用于解决分类问题,其基本原理是:在特征空间里寻找一个超平面,以最小的错分率把正负样本分开.因为SVM既能达到工业界的要求,机器学习研究者又能 ...
- [noip模拟20170921]模版题
今天考的是一套很基础的模版题,但是我这种蒟蒻竟然还是没有AK,不得不说,蒟蒻和大佬的差别不是一点点啊 1.暴走的猴子(walk.pas/c/cpp) [题目描述] 从前有一个森林,森林里生活着一群 ...
- [bzoj4977]跳伞求生<贪心>
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4977 这是八月月赛的一道题,月赛的时候和同学讨论了一下,最后由一位叫二哥的大佬率先AC,用 ...
- Material Design 组件之 FloatingActionButton
Material Design 设计规范在 Google I/O 2014 推出,这种设计理念一经推出就受到广大开发者的喜爱,主要侧重于纸墨化创作和突出设计的实体感,使得设计更接近于真实世界,力求平滑 ...
- Window.requestAnimationFrame()动画更新
概述 Window.requestAnimationFrame()方法告诉浏览器你希望执行动画,并且再下一次重绘之前要求浏览器调用一个特定的函数去更新动画.该方法把一个回调函数作为参数,该回调函数会在 ...
- 存储机制 cookie session jwt token
cookieCookie的诞生 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网 ...
- PTA | 1020. 月饼 (25)
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...