在本篇博文中,本人主要讲解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类的更多相关文章

  1. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

  2. SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架

    1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...

  3. Java基础教程——File类、Paths类、Files类

    File类 File类在java.io包中.io代表input和output,输入和输出. 代表与平台无关的文件和目录. 可以新建.删除.重命名,但不能访问文件内容. File类里的常量: impor ...

  4. Python之Metaclass详解,Python之元类

    本人Java程序员一枚,这几天闲来无事就自学了下Python,学到Metaclass感觉有点迷惑,就在网上查相关资料,在栈溢出(stackoverflow)网站上看到一个关于metaclass的回答, ...

  5. Java IO流详解(二)——File类

    在上一章博客中简单的介绍了Java IO流的一些特征.也就是对文件的输入输出,既然至始至终都离不开文件,所以Java IO流的使用得从File这个类讲起. File类的描述:File类是文件和目录路径 ...

  6. spring mvc DispatcherServlet详解之拾忆工具类utils

    DispatcherServlet的静态初始化 /** * Name of the class path resource (relative to the DispatcherServlet cla ...

  7. Java入门(2) —— 变量详解、运算符、定义类和定义方法以及方法的调用

    1.变量 1.定义变量 1.声明的同时直接赋值 数据类型 变量名 = 值; 2.先声明,后赋值 声明: 数据类型 变量名; 赋值: 变量名 = 值; 2.数据类型 基本数据类型:4类8种 整数 --- ...

  8. nodejs Async详解之二:工具类

    Async中提供了几个工具类,给我们提供一些小便利: memoize unmemoize log dir noConflict 1. memoize(fn, [hasher]) 有一些方法比较耗时,且 ...

  9. 详解 Too many open files

    运行在Linux系统上的Java程序可能会出现"Too many open files"的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景. 程序经常访问的文件.sock ...

随机推荐

  1. OpenCV-Python 图像上的算术运算 | 十一

    目标 学习图像的几种算术运算,例如加法,减法,按位运算等. 您将学习以下功能:cv.add,cv.addWeighted等. 图像加法 您可以通过OpenCV函数cv.add()或仅通过numpy操作 ...

  2. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  3. 维护你的请求队列,处理token异常

    前言 网络请求是开发中最基础也是最核心的需求,封装一个稳定且可用性高的请求也显得尤为重要.通常封装的内容除了入参之外,更多的是请求中的异常处理.本文分享下我在处理 token 异常方面的做法,通过维护 ...

  4. Go深入学习之select

    select的用法 1)select只能用于channel的操作(写入.读出),而switch则更通用一些 2)select的case是随机的,而switch里的case是顺序执行 3)select要 ...

  5. 第 k 小的数

    一.寻找两个有序数组的中位数 1.1 问题描述 给定两个大小为 m 和 n 的不同时为空的有序数组 nums1 和 nums2.找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m ...

  6. 性能测试环境搭建:XAMPP1.8+PHPwind9.0安装教程

    1.安装准备 1.1软件版本 XAMPP的版本:XAMPP 1.8.2 phpwind的版本:PHPWind 9.0   1.2.安装环境 我的环境:win10 其实安装环境影响不大,win7,win ...

  7. PTA | 1029 旧键盘 (20分)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及 ...

  8. .Net微服务实践(五)[服务发现]:Consul介绍和环境搭建

    目录 介绍 服务发现 健康检查.键值存储和数据中心 架构 Consul模式 环境安装 HTTP API 和Command CLI 示例API介绍 最后 在上篇.Net微服务实践(四)[网关]:Ocel ...

  9. 活久见!Linux命令行居然也可以用来查看图像?

    在 Linux 中有很多 GUI 应用程序可以查看图像,但是这对经常使用命令行来工作的人可能会觉得很繁琐.今天要介绍的是 3 个实用的 CLI 图像查看器来在终端上查看图像,让那些使用 CLI 的朋友 ...

  10. 深度解析Java中的5个“黑魔法”

    现在的编程语言越来越复杂,尽管有大量的文档和书籍,这些学习资料仍然只能描述编程语言的冰山一角.而这些编程语言中的很多功能,可能被永远隐藏在黑暗角落.本文将为你解释其中5个Java中隐藏的秘密,可以称其 ...