zoukankan      html  css  js  c++  java
  • NIO.2中Path,Paths,Files类的使用

    Java NIO

    Java NIO概述

    • Java NIO(New IO(新io),Non-Blocking IO(非阻塞的io))是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO APINIO与原来的IO有同样的作用和目的的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的),基于通道的IO操作。NIO将以更高效的方式进行文件的读取操作

    • Java API中提供两套NIO一套是针对标准输入输出NIO另一套就是网络编程NIO

      --->java.nio.channels.Channel(通道)

      ​ --->FileChannel:处理本地文件

      ​ --->SocketChannel:TCP网络编程的客户端的Channel

      ​ --->ServerSocketChannel:TCP网络编程的服务器端Channel

      ​ --->DatagramChannel:UDP网络编程中发送端和接收端的Channel

    NIO.2

    • 随着JDK 7 的发布,Java对NIO进行极大的扩展,增强了对文件处理和文件系统特性的支持,以至于我们称他们为NIO.2

      因为NIO提供的一些功能,NIO已经称为文件处理中越来越重要的部分。

    NIO.2中Path,paths,Files类的使用
    • 早期的Java只提供一个file类来访问文件系统,但file类的功能比较有限,所提供的方法性能也不高。而且,大多数方法出错时仅返回失败,并不会提供异常信息

    • NIO.2为了弥补这种不足,引入Path接口,代表一个平台无关的平台路径,描述了目录结构文件的位置。Path可以看成file类的升级版本,实际引用的资源也可以不存在

    • 在以前IO操作都是这样写的:

      import java.io.File;
      File file = new File("index.html");
      
    • 但是在Java7中,我们可以这样写:

      import java.nio.file.Path;
      import java.nio.file.Paths;
      Path path = Paths("index.html");
      
    • 同时,NIO.2在java.nio.file 包下提供了Files,Paths工具类,Files包含了大量静态的工具方法来操作文件:Paths则包含了两个返回Path的静态工厂方法。

    • Paths类体提供的静态get()方法来获取Path对象:

      static Path get(String first,String ... more); //用于将多个字符串串联成路径
      Static Path get(URL uri); //返回指定的uri对应的Path路径
      
    Path接口
    Path常用方法
    String toString();	//返回调用Path对象的字符串表示形式
    boolean startsWith(String path);	//判断是否以path路径开始
    boolean endsWith(Strng path);	//判断是否以path路径结束
    boolean isAbsolute();	//判断是否是绝对路径
    Path getParent();	//返回Path对象包含整个路径,不包含Path对象指定的文件路径
    Path getRoot();	//返回调用Path对象的根路径
    Path getFileName();	//返回与调用Path对象关联的文件名
    int getNameCount();	//返回Path根目录后面元素的数量
    Path getName(int idx);	//返回指定索引位置idx的路径名称
    Path toAbsolutePath();	//作为绝对路径返回调用Path对象
    Path resolve(Path p);	//合并两个路径,返回合并后的路径对应的Path对象
    File toFile();	//将Path转换为File类对象
    
    Files
    • java.nio.file.Files 用于操作文件或目录的工具类。

    • Files常用方法:

      Path copy(Path src,Path dest,CopyOption ... how);	//文件的赋值
      Path createDirectory(Path path,FileAttribute<?> ... attr);	//创建一个目录
      Path createFile(Path path,FileAttribute<?> ... arr);	//创建一个文件
      void delete(Path path);	//删除一个文件/目录,如果不存在,执行报错
      void deleteIfExists(Path path);	//Path对应的文件/目录如果存在,执行删除
      Path move(Path src,Path dest,CopyOption ... how);	//将src移动到dest位置
      long size(Path path);	//返回path指定文件的大小
      

      Files常用方法:用于判断

      boolean exists(Path path,LinkOption ... opts);	//判断文件是否存在
      boolean isDirectory(Path path,LinkOption ... opts);	//判断是否是目录
      boolean isRegularFile(Path path,LinkOption ... opts);	//判断是否是文件
      boolean isHidden(Path path);	//判断是否是隐藏文件
      boolean isReadable(Path path);	//判断文件是否可读
      boolean isWritable(Path path) ;	//判断文件是否可写
      boolean notExists(Path path,LinkOption ... opts);	//判断文件是否不存在
      

      Files常用方法:用于操作内容

      SeekableByteChannel newByteChannel(Path path,OpenOption ... how);	//获取与指定文件的连接,how指定打开方式。
      DirectoryStream<Path> new DirectoryStream(Path path);	//打开path指定的目录
      InputStream newInputStream(Path path,OpenOption ... how);	//获取InputStream对象
      OutputStream newOutputStream(Path path,OpenOption ... how);	//获取OutputStream对象
      
  • 相关阅读:
    Windows 7任务栏图标特别说明
    Linux下send函数 Broken pipe错误的解决方法
    C++实现一个简单的异常日志记录类
    C++写日志操作
    VC中设置打开文件的权限为管理员权限
    MFC 注册热键
    监控Tomcat状态及配置AIO(APR)模式
    Tomcat管理功能使用及WEB站点部署
    Tomcat多实例配置
    基于端口主机的虚拟主机
  • 原文地址:https://www.cnblogs.com/zk2020/p/14266372.html
Copyright © 2011-2022 走看看