Java NIO学习(Path接口、Paths和Files工具类的使用)
NIO学习:Paths和Files工具类的使用
JDK1.7引入了新的IO操作类。在java.nio.file包下,Java NIO Path接口和Files类。
- Path接口:Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路径。
例如:/或C:/。而允许访问的根部件取决于文件系统。
以根部件开始的路径是绝对路径,否则就是相对路径。
静态的Paths.get方法接受一个或多个字符串,字符串之间自动使用默认文件系统的路径分隔符连接起来(Unix是/,Windows是\),这就解决了跨平台的问题。接着解析连接起来的结果,如果不是合法路径就抛出InvalidPathException异常,否则就返回一个Path对象。
Files工具类:提供了更方便更高效的对文件进行读写的操作方法。
1、读写文件
static Path write(Path path, byte[] bytes, OpenOption...Options):写入文件
static byte[] readAllBytes(Path path):读取文件中的所有字节。
代码示例
import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.nio.file.StandardOpenOption;
public class PathFilesDemo {
public static void main(String[] args) {
createFileOrDir();
}
// 创建文件或目录
private static void createFileOrDir() {
try {
// 创建新目录,除了最后一个部件,其他必须是存在的
Files.createDirectory(Paths.get("F:/test"));
// 创建路径中的中间目录,能创建不存在的中间部件
Files.createDirectories(Paths.get("F:/test/test"));
// 创建文件
Files.createFile(Paths.get("F:/testbak.txt"));
} catch (IOException e) {
e.printStackTrace();
}
}// createFileOrDir
// 删除文件
private static void deleteFile() {
Path p = Paths.get("F:/test.txt");
try {
Files.delete(p);// 用static boolean deleteIfExists(Path path)方法比较好
System.out.println("删除成功");
} catch (IOException e) {
e.printStackTrace();
}
}// deleteFile
// 移动文件
private static void moveFile() {
Path pSrc = Paths.get("F:/test.txt");
Path pDest = Paths.get("E:/test.txt");
try {
Files.move(pSrc, pDest, StandardCopyOption.REPLACE_EXISTING);
System.out.println("移动成功");
} catch (IOException e) {
e.printStackTrace();
}
}// moveFile
// 复制文件
private static void copyFile() {
Path pSrc = Paths.get("F:/test.txt");
Path pDest = Paths.get("F:/testbak.txt");
try {
Files.copy(pSrc, pDest, StandardCopyOption.REPLACE_EXISTING);
System.out.println("复制成功");
} catch (IOException e) {
e.printStackTrace();
}
}// copyFile
// 从文件读取数据
private static void readFromFile() {
Path p = Paths.get("F:/", "test.txt");
try {
byte[] bytes = Files.readAllBytes(p);
System.out.println(new String(bytes));
} catch (IOException e) {
e.printStackTrace();
}
}
// 向文件写入数据
private static void write2File() {
// 获得路径
Path p = Paths.get("F:/", "test.txt");
String info = "I love java really,你喜欢什么?";
try {
// 向文件中写入信息
Files.write(p, info.getBytes("utf8"), StandardOpenOption.APPEND);
System.out.println("写入成功");
} catch (IOException e) {
e.printStackTrace();
}
}// write2File
// 获得文件路径的几种方法
private static void getFilePath() {
File file = new File("F:/test.txt");
// Path
Path p1 = Paths.get("F:/", "test.txt");// F:\test.txt
System.out.println(p1);
Path p2 = file.toPath();
System.out.println(p2);
Path p3 = FileSystems.getDefault().getPath("F:/", "test.txt");
System.out.println(p3);
}// getFilePath
}
Java NIO学习(Path接口、Paths和Files工具类的使用)的更多相关文章
- Java基础学习总结(49)——Excel导入导出工具类
在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...
- JAVA NIO学习四:Path&Paths&Files 学习
今天我们将学习NIO 的最后一章,前面大部分涉及IO 和 NIO 的知识都已经讲过了,那么本章将要讲解的是关于Path 以及Paths 和 Files 相关的知识点,以对前面知识点的补充,好了言归正传 ...
- Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- Java NIO学习系列七:Path、Files、AsynchronousFileChannel
相对于标准Java IO中通过File来指向文件和目录,Java NIO中提供了更丰富的类来支持对文件和目录的操作,不仅仅支持更多操作,还支持诸如异步读写等特性,本文我们就来学习一些Java NIO提 ...
- JAVA NIO学习记录2-非阻塞式网络通信
一.阻塞与非阻塞 传统的IO 流都是阻塞式的.也就是说,当一个线程调用read() 或write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务.因此,在完成网络通信 ...
- Java的Path、Paths和Files
前言 因为这几天被java.nio的这几个接口和工具类卡到了,就顺便地查了一波文档以及使用方法,这篇其实更像是API的复制粘贴,只不过我在注释里多写了一些output和注意事项,看不惯API的可以选择 ...
- java IO流 (九) Path、Paths、Files的使用
1.NIO的使用说明:>Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO AP.>NI ...
- JAVA NIO学习二:通道(Channel)与缓冲区(Buffer)
今天是2018年的第三天,真是时光飞逝,2017年的学习计划还没有学习完成,因此继续开始研究学习,那么上一节我们了解了NIO,那么这一节我们进一步来学习NIO相关的知识.那就是通道和缓冲区.Java ...
- Java NIO 学习笔记(六)----异步文件通道 AsynchronousFileChannel
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
随机推荐
- UX168办公本地环境维护记录
上班到公司 1.打考勤靠.或处理考勤异常 2.钉钉 3.邮件. 4.禅道系统 5.开启nginx.node.monogo服务 5.1.开启nginx服务 /etc/init.d/apache2 sto ...
- SHADER 用 step替代 if-else
今天聊起这个问题,百度发现了这个优化方式: https://blog.csdn.net/liu_if_else/article/details/77455639
- 三层for循环求解组成三角形边的组合
假设a.b.c是三角形的三条边,当三条边符合勾股定理时,即,a2+b2=c2 ,为直角三角形.若a.b.c均为小于等于50的整数,求能够组成直角三角形的所有组合.请显示边的各种可能组合情况,显示总的组 ...
- P1970花匠
传送 首先,这道题据说是一个dp 其次,贪心就能做 我们先来看好想好写的贪心 按照题目来,所有偶数点要么都是凸的,要么都是凹的,不能有凸有凹.我们把每株花的高度都在平面直角坐标系中点出来,再连线.这样 ...
- js中的window对象:打开窗口
~~ window.open():打开一个窗口 里面需要放三个参数: 1.打开窗口(网页)的位置: 2.打开的方式(自身页面,新开页面): 其中_blank新开一个窗口 3.打开网页的属性: wind ...
- 21.线程,全局解释器锁(GIL)
import time from threading import Thread from multiprocessing import Process #计数的方式消耗系统资源 def two_hu ...
- 协程分析之context上下文切换
协程现在已经不是个新东西了,很多语言都提供了原生支持,也有很多开源的库也提供了协程支持. 最近为了要给tbox增加协程,特地研究了下各大开源协程库的实现,例如:libtask, libmill, bo ...
- vuejs基础-style样式
在Vue中使用样式 使用class样式 数组 <h1 :class="['red', 'thin']">这是一个邪恶的H1</h1> 数组中使用三元表达式 ...
- 什么是php工厂模式
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见.今天我们就为大家介绍一下PHP中的 ...
- DS静态查找- 顺序-二分-索引
静态查找 静态表是只执行查找操作,而不执行插入.删除等操作的表. 现在常说的有五大查找方法:顺序查找.分块查找.索引查找.树查找.哈希查找. 后两种之前写过了二叉查找树和哈希表,现在回顾前面三种,它们 ...