`
cucaracha
  • 浏览: 141424 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:87910
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36709
社区版块
存档分类
最新评论

[NIO.2] 第五篇 Path 对象的转换

阅读更多
本文中,你将可以看到如何将 Path 对象转换为其它对象。本文所有例子都是基于下面的 Path 对象:

Path path = Paths.get("/rafaelnadal/tournaments/2009", "BNP.txt");


将 Path 转换为 String

可以直接使用 Path.toString() 方法进行转换:
//output: \rafaelnadal\tournaments\2009\BNP.txt 
String path_to_string = path.toString(); 
System.out.println("Path to String: " + path_to_string); 


将 Path 转换为 URI

可以调用 Path.toURI() 方法转换为浏览器可识别的 URI 格式,输出的字符串可以直接输入到浏览器的地址栏中。
//output: file:///C:/rafaelnadal/tournaments/2009/BNP.txt 
URI path_to_uri = path.toUri(); 
System.out.println("Path to URI: " + path_to_uri); 


将相对路径转换为绝对路径

从相对路径得到绝对路径是一个经常遇到的问题。NIO.2 中可以调用 toAbsolutePath() 来达到这个目的(如果本身就是绝对路径,那么将会返回原有的 path 对象)

//output: C:\rafaelnadal\tournaments\2009\BNP.txt 
Path path_to_absolute_path = path.toAbsolutePath(); 
System.out.println("Path to absolute path: " + path_to_absolute_path.toString()); 


将 Path 转换为真实路径

调用 toRealPath() 方法可以返回一个已存在的文件的真实路径。如果使用不带参数的 toRealPath() 方法并且文件系统支持符号链接的话,这个方法会解析路径中的所有符号连接。如果你想忽略符号链接所链接的文件,而只需要处理符号链接本身的文件,可以传入 LinkOption.NOFOLLOW_LINKS 这个枚举常量作为参数。如果 Path 是相对路径,那么将返回绝对路径,如果 Path 对象中包含有冗余信息,那么冗余信息将会被清除,如果文件不存在或不可访问,那么将会抛出 IOException。
下面的代码将返回文件的真实路径,并且忽略符号链接:
import java.io.IOException; 
… 
//output: C:\rafaelnadal\tournaments\2009\BNP.txt 
try {            
    Path real_path = path.toRealPath(LinkOption.NOFOLLOW_LINKS); 
    System.out.println("Path to real path: " + real_path); 
} catch (NoSuchFileException e) { 
    System.err.println(e); 
} catch (IOException e) { 
    System.err.println(e); 
} 


将 Path 转换为 File


可以调用 Path 对象的 toFile() 方法转换为 File 对象。File 对象也提供了 toPath() 方法来进行相互转换。

//output: BNP.txt 
File path_to_file = path.toFile(); 
 
//output: \rafaelnadal\tournaments\2009\BNP.txt 
Path file_to_path = path_to_file.toPath(); 
System.out.println("Path to file name: " + path_to_file.getName()); 
System.out.println("File to path: " + file_to_path.toString()); 


文章来源:http://www.aptusource.org/2014/03/nio-2-convert-path-object/
分享到:
评论

相关推荐

    第八次课IO操作二.zip

    NIO.2提供了更强大和灵活的文件系统操作,如Path类、Files类等,可以方便地获取文件属性、操作路径、检查文件权限等。 通过学习“第八次课IO操作二”,开发者能掌握Java IO的基本原理和常用操作,为实现各种复杂的...

    Java_Advanced_Programming_File_Directory_code.rar_java programmi

    自Java 7开始,引入了`java.nio.file.Path`接口和`java.nio.file.Paths`类,提供了更安全且平台无关的文件路径操作。它们支持创建、解析、比较和操作路径。 5. **文件过滤器**: `FileFilter`和`FilenameFilter`...

    java按行读取大文件并解析入库

    FileChannel fileChannel = Files.newByteChannel(Paths.get("path_to_your_file")); ``` 2. **分配缓冲区** 创建一个ByteBuffer作为数据交换的媒介。通常,缓冲区大小可以根据文件大小和系统资源进行调整。 `...

    疯狂Java讲义源码(第五部分)

    - **NIO.2(New I/O 2.0)**:介绍了Java 7引入的增强版NIO,如`Files`和`Path` API,提供了更方便的文件操作功能。 通过学习这一部分的源代码,读者可以更好地理解这些高级特性的实现原理,提升编程技巧,并能...

    Java 解决中文路径问题

    - 使用`new File(String path)`构造File对象时,Java会尝试将路径字符串转换为平台相关的字节序列。如果路径包含非ASCII字符(如中文),可能需要手动进行编码转换。可以使用`URLEncoder.encode(path, "UTF-8")`先...

    java语言程序设计基础篇第十版课后习题答案.zip

    2. **环境配置**:学习Java的第一步是安装JDK(Java Development Kit),并设置好环境变量,包括JAVA_HOME、PATH和CLASSPATH,以便于编译和运行Java程序。 3. **基础语法**:包括数据类型(基本类型如int、float,...

    java实现,简单文件监控

    2. **注册监控目录**:接着,我们使用`File.toPath()`方法将`File`对象转换为`Path`对象,然后调用`Path.register(WatchService, WatchEvent.Kind<?>...)`方法,传入需要监听的事件类型。常见的事件类型有`ENTRY_...

    java上传照片的方法

    - 可以使用 `java.nio.file.Files` 类的 `readAllBytes()` 方法读取文件内容,然后使用 `HttpURLConnection` 或第三方库的API添加到请求体。 5. **发送请求并接收响应**: - 打开连接,写入请求头和请求体,然后...

    Java基础课件.zip

    12. **IO/NIO**:学习Java的I/O模型,包括传统的BufferedReader和PrintWriter,以及非阻塞的New IO(NIO)和NIO.2。 13. **反射**:允许程序在运行时检查类的信息并动态调用方法或访问字段。 14. **枚举**:了解...

    java转码

    这篇名为“java转码”的博客文章可能讨论了Java中处理字符编码转换的各种方法。在Java中,主要涉及以下知识点: 1. `Charset` 类:Java的`java.nio.charset`包提供了一个`Charset`类,它代表一种字符集,如UTF-8或...

    JDK 1.5 解压版(64位版)

    JDK 1.5,也被称为Java Development Kit 1.5,是Oracle公司推出的Java编程语言的一个重大更新,标志着Java SE(标准版)的第五个主要版本。这个版本发布于2004年9月30日,引入了许多重要的新特性,对Java编程语言、...

    Java JDK 6学习笔记——ppt简体版

    NIO.2引入了Path类,用于表示文件系统的路径,以及Files类,提供了一系列静态方法来执行常见的文件操作。 5. **改进的Swing和AWT** JDK 6对Swing和AWT组件进行了增强,包括新的LookAndFeel、更好的事件处理以及对...

    Java基础知识总结 - 超详细篇收藏.zip

    1. **Java环境搭建**:学习Java的第一步是安装JDK(Java Development Kit),配置好环境变量,包括JAVA_HOME、PATH和CLASSPATH,以便在命令行中执行Java程序。 2. **Java语法基础**:这包括了解基本的数据类型(如...

    林信良的jdk6学习笔记源代码

    5. **NIO.2**:虽然JDK6中并未完整引入NIO.2,但部分预览功能如Path和Files API已经存在。这些API简化了文件系统操作,源代码中可能有相关的使用示例。 6. **改进的I/O**:JDK6改进了I/O流,例如`BufferedReader`和...

    Android大作业.zip

    2. **非阻塞I/O(NIO)**:与传统的阻塞I/O不同,非阻塞I/O允许应用程序在等待数据准备就绪时执行其他任务,提高了程序的效率和响应性。在Java中,非阻塞I/O可以通过`java.nio`包实现,包括选择器(Selector)和通道...

    jdk7 64位安装版

    5. **文件系统API**:NIO.2(New I/O 2.0)引入了一套新的文件系统API,提供了更加灵活和强大的文件操作功能。 二、JDK7的运行环境 JDK7包含了Java虚拟机(JVM)和Java系统类库,这两部分构成了Java程序运行的基础...

    JAVA12天全掌握

    第五天:异常处理 1. 了解Java异常处理机制,学习try-catch-finally语句块。 2. 掌握不同类型的异常,包括检查异常和运行时异常。 3. 使用throws关键字声明和抛出异常,理解异常链的概念。 第六天:IO流与NIO 1. ...

    【Java基础笔记】Java集合流Stream.docx

    7. 通过 `java.nio.file.Files` 的 `Stream<String> lines(Path path, Charset cs)` 方法,将文件内容转换为流对象。 流的常用操作 流提供了多种常用操作,包括: 处理操作 * `filter(Predicate<? super T> ...

    JDK API文档

    5. **NIO.2(New IO 2)**:虽然NIO.2是在JDK 7中正式推出的,但在1.6版本中已经可以看到一些预览功能,如FileChannel的映射和锁定,以及Path和Files类的部分实现,增强了I/O操作的灵活性和效率。 6. **改进的Swing...

    jdk14.zip,java开发

    2. **Pattern Matching for instanceof(instanceof 的模式匹配)**:这个更新使得在使用instanceof关键字时可以进行模式匹配,简化了类型检查和转换的操作。 3. **开关表达式增强**:JDK14扩展了Java的开关语句...

Global site tag (gtag.js) - Google Analytics