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
    评论
`java.nio.file.Paths` 是 Java 中用于操作文件路径的工具类,提供了一些方便的方法来创建、操作和获取文件路径信息。下面是 `Paths` 类的几个常用方法及其使用示例: 1. `Paths.get(String first, String... more)`:根据给定的路径字符串创建一个 `Path` 对象。 ```java Path path1 = Paths.get("C:", "Users", "username", "Desktop", "file.txt"); Path path2 = Paths.get("/usr/local/bin"); ``` 2. `Path resolve(String other)`:将当前路径与给定路径组合起来,返回一个新的 `Path` 对象。 ```java Path path1 = Paths.get("/usr/local/bin"); Path path2 = path1.resolve("java"); ``` 3. `Path normalize()`:返回一个规范化的路径,即去除冗余的斜杠、点号和双点号等。 ```java Path path1 = Paths.get("/usr/local/./bin/../lib/"); Path path2 = path1.normalize(); ``` 4. `Path toAbsolutePath()`:返回一个绝对路径,即包含完整的路径信息。 ```java Path path1 = Paths.get("file.txt"); Path path2 = path1.toAbsolutePath(); ``` 5. `Path getFileName()`:返回路径中的文件名。 ```java Path path = Paths.get("/usr/local/bin/java"); Path fileName = path.getFileName(); // 返回 "java" ``` 6. `Path getParent()`:返回路径中的父目录。 ```java Path path = Paths.get("/usr/local/bin/java"); Path parent = path.getParent(); // 返回 "/usr/local/bin" ``` 7. `Path subpath(int beginIndex, int endIndex)`:返回路径中从 `beginIndex` 到 `endIndex` 之间的子路径。 ```java Path path = Paths.get("/usr/local/bin/java"); Path subpath = path.subpath(1, 3); // 返回 "local/bin" ``` 8. `Path relativize(Path other)`:返回当前路径相对于给定路径的相对路径。 ```java Path path1 = Paths.get("/usr/local/bin"); Path path2 = Paths.get("/usr/local/share"); Path relativePath = path1.relativize(path2); // 返回 "../share" ``` 以上是 `Paths` 类的一些常用方法及其使用示例,更多详细的方法及其参数说明可以参考官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值