java nio paths_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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值