想要初步了解 NIO.2 API,也就是通常所说的“JSR203: More New I/O APIs for the Java Platform”,最好的切入点就是新的抽象类 java.nio.file.Path 类。这个类是 NIO.2 的里程碑,所有应用程序中的 I/O 操作都和这个类密不可分。这个类几乎可以说是 NIO.2 中最常用的类。
Path 类简介
文件路径存在于文件系统中。文件系统可以通过 java.nio.file.FileSystems 这个 final 类来进行访问,从这个类中可以获取 java.nio.file.FileSystem 类的对象。FileSystems 类提供了下面两个很重要的方法,同时也提供了 newFileSystem() 方法,用来创建一个新的文件系统:
getDefault():这个静态方法返回 JVM 默认的 FileSystem - 一般说来,也就是操作系统的默认文件系统。
getFileSystem(URI uri):这个静态方法从一组文件系统提供者中返回一个与 URI 匹配的文件系统(FileSystem)。Path 类可以在任何文件系统(FileSystem)和任何存储空间(java.nio.file.FileStore; 这个类反应了底层的存储)上操作文件。默认情况下(最常用),Path 类引用默认文件系统(计算机的文件系统)的文件,但是 NIO.2 是完全模块化的—— FileSystem 的具体实现是在内存中的一组数据,因此在网络环境或在虚拟文件系统中,NIO.2 也完全适用。NIO.2 提供给我们在文件系统中操作文件、文件夹或链接的所有方法。
Path 类是 java.io.File 类的升级版,但是在 File 类中还保留了一些特殊的操作,因此 File 类并没有过时或不推荐使用。并且,从 Java 7 开始,两个类都可以使用,这意味着,开发者可以混合使用两个类来编写最好的 I/O 应用。 Java 7 提供了简单的 API 对这两个类进行相互转换。
想想你曾经编写过的类似下面的代码:
import java.io.File;
…
File file = new File("index.html");
从 Java 7 开始,不再需要这样写了,你可以转换为:
import java.nio.file.Path;
import java.nio.file.Paths;
…
Path path = Paths.get("index.html");
仔细看看,Path 类相当于用编程的方式来反应文件系统中的路径。路径的字符串中包含了文件名,目录列表以及操作系统相关的分隔符(例如,在 Windows 中是反斜线“\”,在 Linux 中是正斜线“/”),这意味着 Path 类不是系统独立,而是依赖于系统路径字符串。由于 Path 类基于字符串创建,因此它引用的资源也有可能不存在。
文章来源:
http://www.aptusource.org/2014/03/path-class/
分享到:
相关推荐
这本书通过一系列章节详细讲解了如何使用NIO.2中的各种类和接口来执行复杂的文件操作。 ### 1. Path 类简介 本书推荐的起点是`java.nio.file.Path`类,这是一个抽象类,是NIO.2的一个里程碑。任何涉及I/O操作的...
Java IO、NIO以及NIO.2是Java中用于处理输入/输出操作的三种主要机制。本书《Java IO, NIO and NIO.2》旨在深入浅出地介绍这些机制,同时书中内容均为英文。接下来将详细介绍这些知识点。 **Java IO** Java IO是...
本篇我们将深入探讨NIO.2中的几个关键概念和类,包括`Files`, `Path`, `FileAttributes`, `DirectoryWatcher`以及`FileVisitor`。这些组件极大地增强了Java对操作系统文件系统的访问能力。 首先,`Path`接口是NIO.2...
然后,我们可以调用`Path.register(WatchService, WatchEvent.Kind<?>...)`方法为感兴趣的路径注册监听器。`WatchEvent.Kind<?>`参数代表我们想要监听的事件类型,如`ENTRY_CREATE`(文件或目录创建)、`ENTRY_...
2. 事件处理器:处理不同类型的文件系统事件,如创建、删除和修改。 3. 日志记录:为了调试和监控,可能会有一个日志系统来记录所有监视到的事件。 4. 多线程支持:如果应用需要同时监视多个目录,那么代码可能包含...
4. **NIO.2**:从Java 7开始,引入了NIO.2,增加了对文件系统操作的更多支持,如Path类、Files类和DirectoryStream接口。NIO.2还引入了WatchService,可以监控文件系统的变更事件。 5. **套接字编程**:讲解了TCP和...
本篇文章将详细介绍两种常用的方法来检测Java程序中的文件编码:一是使用`cpdetector`第三方库,二是通过自定义的`EncodingDetect.java`工具类。 1. **cpdetector第三方库** `cpdetector`是一个开源的Java库,它...
在Java中,我们可以使用`java.nio.file`包中的`Files`类以及`Paths`类来实现文件和目录的复制。`Files.copy()`方法提供了多种复制选项,包括覆盖已存在文件等。 ```java import java.nio.file.Files; import java....
在本篇文章中,我们将深入探讨如何在Java中读取、写入以及操作CSV文件,并结合“Path”类来管理文件路径。 首先,让我们理解CSV文件的基本结构。CSV文件由一行行的数据组成,每行数据由一个或多个字段组成,字段...
自Java 8起,`java.nio.file.Files`工具类提供了很多便捷的文件操作方法。以下是如何使用它来下载图片: ```java import java.net.URL; import java.nio.channels.Channels; import java.nio.channels....
NIO.2提供了更强大和灵活的文件系统操作,如Path类、Files类等,可以方便地获取文件属性、操作路径、检查文件权限等。 通过学习“第八次课IO操作二”,开发者能掌握Java IO的基本原理和常用操作,为实现各种复杂的...
在IT行业中,文件操作是日常开发和系统管理中不可或缺的一部分,尤其在处理数据存储、传输和备份时。本实例“实例83_文件操作_拷贝文件”关注的是如何在不同的操作系统环境下复制文件,这是编程和系统管理中的基础...
在IT领域,文件拷贝和复制是日常工作中非常基础但重要的操作。无论是开发人员在调试代码,还是普通用户在管理个人文件,都需要频繁地进行文件的移动和复制。本小例题将深入探讨这一主题,旨在帮助你更好地理解和实现...
8. **Path和Files类**:`java.nio.file.Path`代表文件系统中的路径,`java.nio.file.Files`提供了一系列静态方法,方便进行文件操作,如创建、删除、读写文件,以及检查文件状态等。 9. **正则表达式处理文件名**:...
为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行读取大文件,并将其内容解析后存储到数据库中。本文将详细讲解这一过程。 首先,我们需要了解`java.nio`包...
Java 7引入了NIO.2 API,我们可以使用`Files.newInputStream()`方法读取文件: ```java import java.nio.file.Files; import java.nio.file.Paths; Properties prop = new Properties(); try (InputStream input =...
自Java 7开始,引入了`java.nio.file.Path`接口和`java.nio.file.Paths`类,提供了更安全且平台无关的文件路径操作。它们支持创建、解析、比较和操作路径。 5. **文件过滤器**: `FileFilter`和`FilenameFilter`...
import java.nio.file.Path; import java.nio.file.StandardOpenOption; public class FileMerger { public static void mergeFiles(String outputFilePath, String[] inputFilePaths) throws IOException { try ...