Java 7 NIO.2学习(Ing)

Path类

1、Path的基本用法
Path代表文件系统中的位置,即文件的逻辑路径,并不代表物理路径,程序运行的时候JVM会把Path(逻辑路径)对应到运行时的物理位置上。

package com.javadu.common;

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


/**
 * Created by duqi on 15/9/8.
 */
public class App {
    public static void main(String[] args) {
        //创建Path对象
        Path listing = Paths.get("/usr/bin/zip");
        //获取Path代表的文件(或目录)名字
        System.out.println("File Name [" + listing.getFileName() +"]");
        //获取路径中名称元素的数量
        System.out.println("Number of Name Elements in the Path [" + listing.getNameCount() + "]");
        //获取当前路径的父路径
        System.out.println("Parent Path [" + listing.getParent() +"]");
        //获取当前路径的根目录
        System.out.println("Root Path [" + listing.getRoot() +"]");
        //获取从当前路径的根目录(0)到其第二个元素(2)之间的子路径
        System.out.println("Subpath from Root, 2 elements deep [" + listing.subpath(0,2) +"]");
    }
}

上述程序的输出结果如下:
Path的用法

2、利用Path移除冗余项

  • 利用normalize()方法可以去掉Path中的冗余信息,例如给定”./App.java”,如果直接使用Paths.get("./App.java").getFileName();会找不到这个文件,必须得使用normalize()方法将冗余信息去掉。
  • 利用toRealPath()方法可以检测出符号链接并解析出真正的路径。例如在我的家目录下有.zshrc文件,这个文件其实是个符号链接文件,表示如下,它的真实路径是“/Users/duqi/.zprezto/runcoms/zshrc”

这里写图片描述

查看下面代码:

package com.javadu.common;

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


/**
 * Created by duqi on 15/9/8.
 */
public class App {
    public static void main(String[] args) {
        //去除冗余信息
        Path normalizedPath = Paths.get("./App.java").normalize();
        System.out.println(normalizedPath);
        //处理符号链接,取得真实路径
        try {
            Path realPath = Paths.get("/Users/duqi/.zshrc").toRealPath();
            System.out.println(realPath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

对应的执行结果是:
这里写图片描述

3、向后兼容
(1)java.io.File类中增加了toPath()方法,可以把已经有的File转换为新的Path;
(2)Path类中有个toFile()方法,可以把现有的Path转换为File对象。

处理目录和目录树

文件系统I/O

异步IO

posted @ 2015-09-09 17:52  javaadu  阅读(179)  评论(0编辑  收藏  举报