Java Nio 十五、Java NIO Path

【Java学习】7大绝招教你玩转Java NIO Path接口,你还在等什么? 亲爱的小伙伴们,大家好!今天我们要一起深入探索Java NIO中的一个重要接口——Path。Path接口提供了一种方便的方式来表示和操作文件路径。通过Path接口,你可以轻松地进行文件和目录的各种操作。那么,如何在Java NIO中使用Path接口呢?让我们一起来看看吧!Path接口简介Path接口表示文件系统中的路径。它提供了一系列方法来操作路径,包括获取路径的各个部分、创建文件和目录、删除文件和目录等。Path接口的主要实现类是,通常通过方法获取Path对象。主要方法:获取Path对象。 阅读详情

最后更新时间:2015-03-12

这个Java Path接口是中Java 6或者Java 7中Java NIO 2更新的一部分。这个Java Path接口中Java 7中被添加到了Java NIO中。这个Path接口被放置到了java.nio.file包中,以至于这个Java Path的完整定义名称是:java.nio.file.Path。

一个Java Path实例显示了一个文件系统的路径。一个路径可以指向一个文件或者一个目录。一个路径可以是一个绝对路径或者是相对的路径。一个绝对路径包含来自于文件系统的根到它指向的文件或者目录的完整路径。一个相对路径包含了一个对于文件或者目录相对一些其他路径的路径。相对路径听起来可能有点混乱。不要担心。我将会在这一部分中详细的解释相对路径的含义。

不要在一些操作系统中把一个文件系统同这个path环境变量混淆。这个java.nio.file.Path接口对于path环境变量什么也没有做。

在许多方面,这个java.nio.file.Path接口跟java.io.File类是相似的,但是这里有一些很小的不同。在许多场景下,你可以用Path接口的使用代替File类的使用。

创建一个Path实例

为了使用一个java.nio.file.Path实例,你必须创建一个Path实例。你使用中Paths类中(java.nio.file.Paths)命名的Paths.get()的静态方法创建一个Path实例。这里有一个例子:

import java.nio.file.Path;
import java.nio.file.Paths;

public class PathExample {

    public static void main(String[] args) {

        Path path = Paths.get("c:\\data\\myfile.txt");

    }
}

注意中上面例子中的两个import语句。为了使用Path接口和Paths类,我们必须首先导入他们。

第二,注意这个Paths.get("c:\\data\myfile.txt")方法调用。它是调用Paths.get()方法创建Path实例。换句话说,这个Paths.get()方法是一个工厂方法去创建Path实例。

创建一个绝对路径

创建一个绝对路径是通过调用Paths.get()工厂方法伴随着一个绝对路径的文件作为参数被做的。这里有一个例子:

Path path = Paths.get("c:\\data\\myfile.txt");

这个绝对路径是c:\data\myfile.txt。这两个“\”字符中java字符串中是需要的,因为这个“\”是一个转义字符,意味着下面的字符告诉什么字符在这个字符串中是真正的位于这个位置中。通过写“\\”,你告诉java编译器去写一个单独的“\”字符进入到这个字符串中。

上面的路径是一个Windows文件系统路径。在一个Unix系统(Linux,MacOS,FreeBSD),上面的路径应该像这样:

Path path = Paths.get("/home/jakobjenkov/myfile.txt");

现在这个绝对路径是/home/jakobjenkov/myfile.txt。

如果你找Windows机器上使用这种路径(以一个“/”开始的路径),这个路径对于当前的驱动将会被解释为相对路径。例如,这个路径:

/home/jakobjenkov/myfile.txt

有可能会被解释为位于C盘中。然后这个路径将会响应成这样的一个完整的路径:

C:/home/jakobjenkov/myfile.txt

创建一个相对路径

一个相对路径是从一个路径(这个基础路径)指向到一个目录或者文件的路径。一个相对路径的完整路径(绝对路径)是通过使用一个相对路径结合基本路径得到的。

这个Java NIO的Path类也可以用来同相对路径工作。你可以使用这个Paths.get(basePath,relativePath)方法创建一个相对路径。这里有两个相对路径的例子:

Path projects = Paths.get("d:\\data", "projects");

Path file     = Paths.get("d:\\data", "projects\\a-project\\myfile.txt");

第一个例子创建了一个Java Path实例,它指向了这个路径(目录):d:\data\projects。

第二个例子创建了一个Path实例,它指向了这个路径(文件):d:\data\projects\a-project\myfile.txt。

当同相对路径一起工作的时候,这里有两个特殊的编码你可以使用中路径字符串中。这些编码是:

  • .
  • ..
这个“.”编码意味着“当前目录”。例如,如果你想这样创建一个相对路径:
Path currentDir = Paths.get(".");
System.out.println(currentDir.toAbsolutePath());

然后这个绝对路径相对于Java Path实例将会是应用程序正在执行上面代码的目录。
如果这个“.”被使用在路径字符串的中间,它意味着和路径一样的目录正在指向那个点。这里有一个例子:
Path currentDir = Paths.get("d:\\data\\projects\.\a-project");

这个路径将会指向下面这个路径:
d:\data\projects\a-project

这个“..”编码意味着“父目录”或者“一个上级目录”。这里有一个例子:
Path parentDir = Paths.get("..");

被这个例子创建的Path实例将会相对于当前应用程序执行的当前目录的上级目录。
如果你使用这个“..”编码中路径字符串的中间,它将会相对于当前目录的上级目录。例如:
String path = "d:\\data\\projects\\a-project\\..\\another-project";
Path parentDir2 = Paths.get(path);

通过这个例子创建的Java Path实例将会对应这个绝对目录:
d:\data\projects\another-project

这个“.”和“..”码也会结合中两个字符串的Paths.get()方法中使用。实例如下:
Path path1 = Paths.get("d:\\data\\projects", ".\\a-project");

Path path2 = Paths.get("d:\\data\\projects\\a-project",
                       "..\\another-project");

这里有更多的方式使用Java NIO的Path类被使用来工作。中这个教程的后面将会学到更多。
Path.normalize()
Path接口的这个normalize方法可以标准化一个路径。标准化意味着它可以移除所有在路径字符串中的这个"."和“..”符号,并且解析这个路径字符串指向的什么路径。这里有一个例子:
String originalPath =
        "d:\\data\\projects\\a-project\\..\\another-project";

Path path1 = Paths.get(originalPath);
System.out.println("path1 = " + path1);

Path path2 = path1.normalize();
System.out.println("path2 = " + path2);

这个Path例子首先在中间使用一个“..”符号创建一个路径字符串。然后这个例子通过这个路径字符串创建一个Path实例,并且打印这个Path实例(实际上它打印了Path.toString())。
这个例子然后中创建的Path实例上调用normalize方法,这样将会返回一个新的Path实例。这个新的,标准化的Path实例然后也会打印出来。
下面是上面的例子打印的结果:
path1 = d:\data\projects\a-project\..\another-project
path2 = d:\data\projects\another-project

正如你看到的,这个被标准化的路径不会包含这个a-project\..的部分,因为这个是多余的。这个被移除的部分什么也不会添加到最终的绝对路径中。


翻译地址:http://tutorials.jenkov.com/java-nio/path.html

Notepad免安装版实战:U盘便携配置、插件避坑与工具链集成 绿色便携软件是指解压即用、配置随程序目录走的轻量级工具,其原理是通过ini文件替代注册表写入,实现跨设备环境隔离。这种设计的技术价值在于不污染系统、即插即用,尤其适合多机切换、老系统维护和客户现场临时处理文本的场景。在文本编辑领域,Notepad类工具的免安装版常面临插件路径、文件关联和编码检测等工程问题,需要手动调整配置目录和位数匹配。掌握便携模式启动参数与外部工具调用方法,可将U盘打造成随身工具链入口,高效完成换行符替换、JSON格式化等任务。 阅读详情

相关推荐

rsyslog交叉编译(armv7、armv8、aarch64、arm32平台通用)

该文档描述了如何交叉编译rsyslog到arm64嵌入式平台。

sinat_33909696的博客 1560

JAVA学习-NIO.Path接口

Java NIO(New Input/Output)库提供了Path接口,用于操作文件路径和文件系统。Path接口表示文件系统中的一个路径,可以是文件或目录。它提供了一组方法来访问、操作和解析路径。

weixin_69763181的博客 1086

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 521

NIO之Path介绍

Path接口是java NIO2的一部分。首次在java 7中引入。Path接口在包下,所以全称是。java中的Path表示文件系统的路径。可以指向文件或文件夹。Path同时也有相对路径和绝对路径之分:绝对路径:表示从文件系统的根路径到文件或是文件夹的路径。相对路径:表示从特定路径下访问指定文件或文件夹的路径。如果使用java.nio.file.Path实例,必须先创建它。通过静态工厂方法创建。/***///创建Path实例。

smart_an的专栏 470

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 377

白话机器学习算法理论+实战番外篇之Xgboost

1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Adaboost等 无监督算法:聚类,降维,关联规则, PageRank等 我前面已经尝试用最白话的语言完成了一个白话机器学习算法理论+实战系列,这个系列已经基本包含了上面这些算...

Miracle8070 1万+

NIO之Path

Java的Path接口是Java NIO2的一部分,位于java.nio.file包中,全路径为java.nio.file.Path。 一个Path实例代表了一个文件系统中的路径。一个路径可以指向一个文件或文件夹。 一个路径可以是相对路径(相对于其他路径的文件或文件夹路径)和绝对路径(从根路径开始的全路径)。 java.nio.file.Path接口和java.io.File类是相似的,但不完全...

加油 929

Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介

Plces 电力电子仿真专业教程系列依托专业的电力电子仿真软件Plecs对各种电力电子常用的拓扑及实际设计的方案进行系统及仿真与软件代码仿真实践。通过对各种电路仿真原理的讲解及专业C语言代码程序的编写,提升学员的系统设计能力,软件编程能力与理论分析能力。

3641

Java NIO之拥抱Path和Files

Java面试通关手册(Java学习指南)github地址(欢迎star和pull):github.com/Snailclimb/… 历史回顾: Java NIO 概览 Java NIO 之 Buffer(缓冲区) Java NIO 之 Channel(通道) Java NIO之Selector(选择器) 其他高赞文章: 面试中关于Redis的问题看这篇就够了 一文轻松搞懂redis集群原理及搭建与...

weixin_33884611的博客 867

【GameFramework框架内置模块】17、声音(Sound)

声音(Sound)模块是管理音频的模块,比如播放、停止、修改音量等,支持淡入淡出、AudioMixer等高级设置。声音(Sound)的配置面板如下所示:所有的声音统一按照组来分,可以根据需要添加或者溢出组,声音组可以配置Agent的数量和音量等。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1912

TPAMI 2024 | MO-MIX:基于深度强化学习的多目标多智能体协同决策

深度强化学习(RL)已被广泛应用于解决复杂的决策问题。在许多现实世界的场景中,任务通常有多个相互冲突的目标,并且可能需要多个智能体进行合作,这些是多目标多智能体决策问题。然而,在这个交叉领域的研究工作还相对较少。现有的方法仅限于单独的领域,并且只能处理具有单一目标的多智能体决策,或者具有单一智能体的多目标决策。在本文中,我们提出了MO-MIX来解决多目标多智能体强化学习(MOMARL)问题。我们的方法基于集中训练与分散执行(CTDE)框架。

小白学视觉 1129

Java NIO(十五) Path 的用法

Java路径接口是Java NIO 2更新的一部分,Java NIO在Java 6和Java 7中接收Java路径接口。Java路径接口已添加到Java 7中的Java NIO。路径接口位于java.nio.file包中,所以Java Path接口的完全限定名是java.nio.file.Path。 Java...

weixin_34268579的博客 247

SAP会计凭证导入ABAP开发模板+注意点—附带源码

开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。

小九啥也不会 1232

Java开发笔记(九十五)NIO配套的文件工具Files

NIO不但引进了高效的文件通道,而且新增了更加好用的文件工具家族,包括路径组工具Paths、路径工具Path、文件组工具Files。先看路径组工具Paths,该工具提供了静态方法get,输入某个文件的路径字符串,输出该文件路径的路径对象Path。通过get方法获取路径对象的代码示例如下: // 根据指定的文件路径字符串获得对应的Path对象 Path path = Paths.get(mDirNa...

pinlantu的博客 304

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

十五:IO流

跳转到总目录 文章目录01、File类的使用1.1、File类的实例化1.2、File类的常用方法11.3、File类的常用方法21.4、课后练习02、IO流原理及流的分类2.1、IO流原理2.2、流的分类2.3、IO 流体系04、节点流(或文件流)4.1、FileReader读入数据的基本操作4.2、FileReader中使用read(char[] cbuf)读入数据4.3、FileWriter写出数据的操作4.4、使用FileReader和FileWriter实现文本文件的复制4.5、使用FileInp

本人主攻Java,希望自己能成为出色的程序员。 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java集成nio_Java开发笔记(九十五)NIO配套的文件工具Files

NIO不但引进了高效的文件通道,而且新增了更加好用的文件工具家族,包括路径组工具Paths、路径工具Path、文件组工具Files。先看路径组工具Paths,该工具提供了静态方法get,输入某个文件的路径字符串,输出该文件路径的路径对象Path。通过get方法获取路径对象的代码示例如下:// 根据指定的文件路径字符串获得对应的Path对象Path path = Paths.get(mDirName...

weixin_39797393的博客 127

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

海纳百川而来的一篇相当全面的Java NIO教程

目录 零、NIO包 一、Java NIO Channel通道 Channel的实现(Channel Implementations) Channel的基础示例(Basic Channel Example) 二、Java NIO Buffer缓冲区 ...

weixin_33774615的博客 556

[NIO.2] 第二十五篇 文件及目录的校验

在对文件或目录进行操作之前,可以先调用 Files 类上的一系列 isXXX 方法来对文件或目录进行校验。对文件先进行校验再操作可以避免产生一些不必要的异常。例如,可以先校验文件是否存在,再做移动或删除的操作。或者先校验文件是否可读写,再对文件做读写操作。 [b][size=x-large]检查文件或目录是否存在[/size][/b] 无论真实文件系统中是否真的存在文件或目录,都可以创...

Terry Zhang 的技术博客 611

java 右键获取路径,java路径

Java NIO(十五) Path 的用法Java路径接口是Java NIO 2更新的一部分,Java NIO在Java 6和Java 7中接收Java路径接口。Java路径接口已添加到Java 7中的Java NIO。路径接口位于java.nio.file包中,所以Java Path接口的完全限定名是java.nio.file.Path...文章微笑着生活2018-01-29656浏览量Java...

weixin_35045973的博客 174

Java学习路径与核心技术实践指南

Java作为企业级开发的主流语言,其核心在于JVM、集合框架和并发编程三大技术支柱。JVM通过字节码执行和垃圾回收机制实现跨平台特性,集合框架以高效的数据结构算法支撑业务逻辑,而并发编程则利用线程模型和锁机制解决多任务处理难题。这些技术在现代分布式系统和云原生架构中具有关键价值,特别是在高并发交易、实时数据处理等场景。本文基于OpenJDK和HotSpot虚拟机的最新特性,结合Amazon Corretto等生产级发行版,深入剖析字符串内存优化、G1GC日志分析等实用技巧,并探讨微服务架构下GraalVM原

weixin_33797791的博客 426
上一篇: 自己动手搭建redis集群及使用
下一篇: Java Nio 十六、Java NIO Files
大军001
博客等级 码龄17年 105粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值