Java NIO库中三个不同的类Files、Path和Paths

Files.Path.Paths 三个类是 Java NIO(New I/O)框架的一部分,用于处理 Java 程序中的文件系统操作。让我们详细介绍一下这三个类:
1. java.nio.file.Files 类:
   - Files 类是 Java NIO 框架的核心部分,提供了一套用于执行各种文件和文件系统操作的静态方法。
   - 以下是一些 Files 类提供的重要方法:
     - exists(Path path): 检查给定路径的文件或目录是否存在。
     - createFile(Path path): 创建一个新文件。
     - createDirectory(Path path): 创建一个新目录。
     - copy(Path source, Path target): 将文件从源路径复制到目标路径。
     - move(Path source, Path target): 将文件从源路径移动到目标路径。
     - isDirectory(Path path): 检查给定路径是否为目录。
     - isRegularFile(Path path): 检查给定路径是否为常规文件。
     - list(Path directory): 返回目录中的所有文件和目录的列表。
     - size(Path path): 获取文件的尺寸。
     - readAllBytes(Path path): 读取文件的内容并将其作为字节数组返回。
     - write(Path path, byte[] bytes): 将字节数组写入文件。
   - Files 类提供了一个强大的工具集,用于管理文件和目录,以及执行各种文件系统相关的任务。

2. java.nio.file.Path 类:
   - Path是一个接口,用于表示文件系统中的路径。它提供了许多方法来操作路径,例如检索文件名、父路径、解析相对路径等。可以使用Paths类的静态方法来获取Path对象
   - 您可以使用 Path 对象来组合、操纵和解析路径。它还提供方法来检查路径的属性,例如文件名、父目录、扩展名等。
   - 以下是一些 Path 类提供的重要方法:
     - getFileName(): 获取路径的文件名。
     - getParent(): 获取路径的父目录。
     - resolve(Path other): 将另一个路径解析到此路径中,并返回结果路径。
     - normalize(): 将路径规范化,消除任何多余的元素(例如 "." 或 "..”)。
     - toAbsolutePath(): 将相对路径转换为绝对路径。
   - Path 对象通常用于在文件系统操作中指定文件或目录的位置。

3. java.nio.file.Paths 类:
   - Paths 类提供了一种创建 Path 对象的方法。它提供了一个工厂方法来从字符串路径创建 Path 对象。
   - java.nio.file.Paths 类包含了一些静态方法,用于创建Path对象。这些方法允许你根据提供的路径字符串或URI来创建Path对象。:
     - get(String first, String ... more): 从一个或多个字符串创建一个 Path 对象。
     - get(URI uri): 从一个 URI 创建一个 Path 对象。
   - Paths 类通常用于将字符串路径转换为 Path 对象,以便在文件系统操作中使用。
总之,这三个类协同工作,提供了一种强大的工具集,用于在 Java 程序中执行文件系统操作。

Files 类提供用于操作文件和目录的方法,Path 类表示文件系统路径,而 Paths 类则用于创建 Path 对象。

-----------

 理解这些类的差异和主要用途对于文件操作非常重要。详细解释一下:
1. Files 类:
   - 主要用途:提供了一系列静态方法,用于执行各种文件操作,如复制、移动、删除文件,以及读取/写入文件内容等。它是你与文件直接交互的主要工具,通过调用其方法可以完成对文件的各种操作。
   - 范例用法:
     Path source = Paths.get("source.txt");
     Path target = Paths.get("target.txt");
     Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
2. Path 接口:
   - 主要用途:表示文件系统中的路径,并提供了许多方法来操作路径信息,例如解析、合并、获取绝对路径等。Path 接口本身并不执行实际的文件操作,而是用于处理路径字符串和路径之间的关系。
   - 范例用法:
     Path path = Paths.get("/home/user/example.txt");
     String fileName = path.getFileName().toString();
3. Paths 类:
   - 主要用途:用于创建 Path 实例。它是一个工厂类,用于生成 Path 对象,通常用于构造路径对象的起始点。java.nio.file.Paths 类包含了一些静态方法,用于创建Path对象。这些方法允许你根据提供的路径字符串或URI来创建Path对象。
   - 范例用法:
     Path path1 = Paths.get("/home/user/example.txt");
     Path path2 = Paths.get("relativePath", "file.txt");
总结来说,Files 类用于执行文件操作,Path 接口用于表示路径并执行路径操作,Paths 类用于创建 Path 对象。这三者协同工作,为Java应用程序提供了强大的文件系统操作功能。

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.io.IOException;public class FileOperationsExample {public static void main(String[] args) {try {// 创建一个路径Path path = Paths.get("exampleNio.txt");// 写入文件内容String content = "Hello, Java NIO!";Files.write(path, content.getBytes());// 读取文件内容byte[] fileData = Files.readAllBytes(path);String readContent = new String(fileData);System.out.println("文件内容:" + readContent);// 检查目标文件是否存在Path targetPath = Paths.get("exampleNio_copy.txt");if (Files.exists(targetPath)) {// 如果目标文件已经存在,选择覆盖目标文件Files.copy(path, targetPath, StandardCopyOption.REPLACE_EXISTING);System.out.println("目标文件已存在,已覆盖原文件");} else {// 如果目标文件不存在,则正常复制文件Files.copy(path, targetPath);System.out.println("文件复制成功");}// 删除原始文件Files.delete(path);} catch (IOException e) {System.err.println("发生 I/O 错误: " + e.getMessage());}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻松搞定LOGO渲染,用ComfyUI快速生成炫酷效果图!

一、准备工作一键搞定 必备资源:垫图和风格参考图 垫图:提供LOGO的基础参考。 风格参考图:确定LOGO的最终效果风格。 节点信息:一键配置 自定义节点(9):包括ComfyUI_Comfyroll_CustomNodes, …

【安装笔记-20240524-Windows-安装测试 7-Zip】

安装笔记-系列文章目录 安装笔记-20240524-Windows-安装测试 7-Zip 文章目录 安装笔记-系列文章目录安装笔记-20240524-Windows-安装测试 7-Zip 前言一、软件介绍名称:7-Zip主页官方介绍7-Zip 主要特征 二、安装步骤测试版本:24.05 (2024-05-14) for Wi…

burpsuite抓包响应报文乱码

1、响应报文中的中文信息乱码 2、解决办法 3、设置成功后重新发起请求

数据可视化-汇总

九大数据分析方法-综合型分析方法以及如何使用这九大分析方法 九大数据分析方法-单指标分析方法与多指标分析方法 数据分析方法与模型 电商数据分析:只会环比下降3%的数据分析师还有救吗? 数据可视化第二版-拓展-和鲸网约车分析一等奖作品 Echarts5…

VMware安装Windows11

本文记录了我使用VMware安装Windows11的操作系统的流程,供大家参考。 创建虚拟机 新建虚拟机 直接默认点下一步 稍后安装操作系统 选择操作系统 本来应该选Windows11的但是我这个版本的VMware没有Windows11所以就选Windows10吧 命名虚拟机 固件类型 注意选择UE…

打开深度学习的锁:(3)进阶知识补充

进阶知识补充 零、深度学习的技巧1.偏差和方差解决技巧2.深度网络层数 一、深度学习的核心1. 参数(Weights and Biases)2. 网络架构(Network Architecture)2.1. 激活函数和其导数Sigmoid 函数:ReLU 函数:Ta…

Mesh接入简化SUI转账流程

是一家嵌入式金融公司,旨在实现无缝的加密货币转账,现在宣布支持SUI。Mesh的技术已经整合了300多个交易所和钱包,用户现在可以轻松地将SUI转入和转出包括Coinbase和Binance在内的热门钱包和交易所。 Mesh的技术解决了传统Web3用户在转账时遇…

数据库小项目——叮叮移动业务大厅(三层架构+MySQL数据库)

源码已上传至资源 该项目主要使用技术为MySQL数据库,其中也包含了一些对于文件的写入和读取操作。项目结构采用三层架构,后端的业务逻辑清晰明了。 1.项目结构 项目采用控制台版,前端业务在java包下,每个业务单独成块。若想要GUI…

Day05-Grafana的基本应用与配置

Day05-Grafana的基本应用与配置 1. Grafana概述2. Grafana实战2.1 环境准备2.2 使用流程1)部署grafana 9.3.62)web页面访问3)配置zbx插件4)配置grafana的数据源5)web: Grafana web页面添加与配置图形dashboard,仪表盘6…

每日一练2024.5.24(补2024.5.26)

题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入&#x…

李良济中医馆荣获天猫健康中药行业“2023年度潜力中医馆”!

李良济集团旗下中医电商品牌李良济中医馆,凭借其在行业中持续提升的竞争力,荣获天猫健康中药行业“2023年度潜力中医馆”称号。 百年品牌,品质信得过 李良济成立于1914年,百余年来,恪守“良心良药,济世济人…

14、Go Gin打印日志

1、使用标准库log包 使用Go的标准库log包,可以快速打印日志到控制台或者文件。 package mainimport ("github.com/gin-gonic/gin""log" )func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {log.Println("请…

centos7和centos8安装mysql5.6 5.7 8.0

https://dev.mysql.com/downloads/repo/yum/ 注意构造下http://repo.mysql.com/mysql-community-release-el*-*.noarch.rpm 【以centos7为例】 安装mysql5.6 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5…

byzer plugin install log

离线插件参考地址: Byzer Documentation 离线安装方式(错误过程记录): 参考文档:https://docs.byzer.org/#/byzer-lang/zh-cn/extension/README Byzer-lang 支持插件安装,删除,获取列表等。安装…

探索Linux中的神奇工具:深入了解find命令

探索Linux中的神奇工具:深入了解find命令 在Linux系统中,find命令是一个强大且灵活的工具,用于在文件系统中查找符合条件的文件和目录。本文将详细介绍find命令的基本用法和一些常见选项,帮助读者更好地理解和运用这个命令。 了…

力扣3152. 特殊数组 II

如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 特殊数组 。 周洋哥有一个整数数组 nums 和一个二维整数矩阵 queries,对于 queries[i] [fromi, toi],请你帮助周洋哥检查子数组 nums[fromi..toi] 是不是一个 特殊…

hcip—VLAN实验

目录 实验拓扑: 实验目的: 实验思路: 实验步骤: 1.创建VLAN 2.将接口放进相应VLAN当中,并配置接口类型(hybrid口配置撕tag表) 3.配置路由器接口 4.配置DHCP服务 pc1 ping pc4的过程分析…

esp32 编程指南核心文件

ESP-IDF 编程指南 - ESP32-C3 - — ESP-IDF 编程指南 v5.1 文档 (espressif.com) ESP-IDF 入门指南 | 乐鑫科技 (espressif.com)

linux下的docker使用

docker是什么,docker翻译过来的意思就是码头工人,顾名思义,docker本质上就是一个搬运工,只不过从搬运货物改成了搬运程序,使搬运的不同的程序能够独立的运行在码头上的不同容器内,互不干扰,而他…

“腾讯云 AI 代码助手”体验

一、“腾讯云 AI 代码助手”体验 1、注册账号并进行实名认证 2、进入开发环境 3、体验javascript简单函数 代码如下: //请写一个两个日期计算的函数 function dateDiff(date1, date2) {return date2.getTime() - date1.getTime(); } var date1 new Date("2…