java.nio --Path--Files--基本使用

Java NIO(New IO或 Non Blocking IO)是从java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。

接下来几天我将努力学习,并分享nio包学习成果

以下是nio包 interface Path的基本使用

Path对象对应的是io包中的File对象

package com.xiaoqiang;

import static org.junit.Assert.*;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.nio.file.DirectoryStream;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import org.junit.Test;

public class PathUser {
    @Test
    public void test1() throws Exception {
        // Path用于来表示文件路径和文件
        // 常见的创建 Path对象
        Path path1 = Paths.get("./", "src/", "photo");
        Path path2 = Paths.get("./src/photo");
        // path 1 和 path 2 表示相同
        Path path3 = Paths.get(new URI("file:///G:/pic"));
        Path path4 = FileSystems.getDefault().getPath("./src/photo");
        File file = path4.toFile();
        Path path5 = file.toPath();
    }

    /**
     * 等同File的操作
     * 
     * @throws Exception
     */
    @Test
    public void test2() throws Exception {
        /**
         * ...为JDK1.5新特性 可变参数
         */

        // static FileTime getLastModifiedTime(Path path, LinkOption... options)
        // 返回文件的上次修改时间。
        // static UserPrincipal getOwner(Path path, LinkOption... options)
        // 返回文件的所有者。
        // static Set<PosixFilePermission> getPosixFilePermissions(Path path,
        // LinkOption... options)
        // 返回文件的POSIX文件权限。
        // static boolean isDirectory(Path path, LinkOption... options)
        // 测试文件是否是目录。
        // static boolean isExecutable(Path path)
        // 测试文件是否可执行。
        // static boolean isHidden(Path path)
        // 告知文件是否被 隐藏 。
        // static boolean isReadable(Path path)
        // 测试文件是否可读。
        // static boolean isRegularFile(Path path, LinkOption... options)
        // 测试文件是否是具有不透明内容的常规文件。
        // static boolean isSameFile(Path path, Path path2)
        // 测试两个路径是否找到相同的文件。
        // static boolean isSymbolicLink(Path path)
        // 测试文件是否是符号链接。
        // static boolean isWritable(Path path)
        // 测试文件是否可写。
    }

    /**
     * 文件 创建 移动 重命名 复制 删除等
     * 
     * @throws Exception
     */
    @Test
    public void test3() throws Exception {
//      static Path copy(Path source, Path target, CopyOption... options) 
//      将文件复制到目标文件。  
//      static Path createDirectories(Path dir, FileAttribute<?>... attrs) 
//      首先创建所有不存在的父目录来创建目录。  
//      static Path createDirectory(Path dir, FileAttribute<?>... attrs) 
//      创建一个新的目录。 
//      static Path createFile(Path path, FileAttribute<?>... attrs) 
//      创建一个新的和空的文件,如果该文件已存在失败。  
//      static Path createLink(Path link, Path existing) 
//      为现有文件创建新的链接(目录条目) (可选操作)  
//      static void delete(Path path) 
//      删除文件。  
//      static boolean deleteIfExists(Path path) 
//      删除文件(如果存在)。  
//      static boolean exists(Path path, LinkOption... options) 
//      测试文件是否存在。  
//      static Path move(Path source, Path target, CopyOption... options) 
//      将文件移动或重命名为目标文件。  
    }

    @Test
    public void test4() throws Exception {
        // 遍历文件
        // JDK 1.7 try-with-resources

        Path path = Paths.get("./src/photo");
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
            for (Path p : stream) {
                System.out.println(p);
            }
            // stream.forEach(e -> System.out.println(e));
            // forEach 为java1.8新特性 Lambda表达式
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

JAVA 8 Lambda表达式使用-> click me

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值