Class PathUtil

java.lang.Object
com.luna.common.file.PathUtil

public class PathUtil extends Object
NIO中Path对象操作封装
Since:
5.4.1
Author:
looly
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static Path
    copy(Path src, Path target, CopyOption... options)
    拷贝文件或目录,拷贝规则为: 源文件为目录,目标也为目录或不存在,则拷贝整个目录到目标目录下 源文件为文件,目标为目录或不存在,则拷贝文件到目标目录下 源文件为文件,目标也为文件,则在StandardCopyOption.REPLACE_EXISTING情况下覆盖之
    static Path
    copyContent(Path src, Path target, CopyOption... options)
    拷贝目录下的所有文件或目录到目标目录中,此方法不支持文件对文件的拷贝。 源文件为目录,目标也为目录或不存在,则拷贝目录下所有文件和目录到目标目录下 源文件为文件,目标为目录或不存在,则拷贝文件到目标目录下
    static Path
    copyFile(Path src, Path target, CopyOption... options)
    通过JDK7+的 Files.copy(Path, Path, CopyOption...) 方法拷贝文件
    此方法不支持递归拷贝目录,如果src传入是目录,只会在目标目录中创建空目录
    static Path
    copyFile(Path src, Path dest, StandardCopyOption... options)
    通过JDK7+的 Files.copy(Path, Path, CopyOption...) 方法拷贝文件
    此方法不支持递归拷贝目录,如果src传入是目录,只会在目标目录中创建空目录
    static boolean
    del(Path path)
    删除文件或者文件夹,不追踪软链
    注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹
    某个文件删除失败会终止删除操作
    protected static void
    delFile(Path path)
    删除文件,不追踪软链
    static boolean
    equals(Path file1, Path file2)
    检查两个文件是否是同一个文件
    所谓文件相同,是指Path对象是否指向同一个文件或文件夹
    static boolean
    exists(Path path, boolean isFollowLinks)
    判断文件或目录是否存在
    getAttributes(Path path, boolean isFollowLinks)
    获取文件属性
    获得输入流
    static Path
    获取指定位置的最后一个子路径部分
    static String
    获得文件的MimeType
    获得输出流
    static Path
    getPathEle(Path path, int index)
    获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置
    getReader(Path path, Charset charset)
    获得一个文件读取器
    获得一个文件读取器
    static boolean
    判断是否为目录,如果file为null,则返回false
    此方法不会追踪到软链对应的真实地址,即软链被当作文件
    static boolean
    isDirectory(Path path, boolean isFollowLinks)
    判断是否为目录,如果file为null,则返回false
    static boolean
    isDirEmpty(Path dirPath)
    目录是否为空
    static boolean
    isFile(Path path, boolean isFollowLinks)
    判断是否为文件,如果file为null,则返回false
    static boolean
    isSub(Path parent, Path sub)
    判断给定的目录是否为给定文件或文件夹的子目录
    static boolean
    判断是否为符号链接文件
    static List<File>
    loopFiles(Path path, int maxDepth, FileFilter fileFilter)
    递归遍历目录以及子目录中的所有文件
    如果提供path为文件,直接返回过滤结果
    static Path
    mkdir(Path dir)
    创建所给目录及其父目录
    static Path
    创建所给文件或目录的父目录
    static Path
    move(Path src, Path target, boolean isOverride)
    移动文件或目录
    当目标是目录时,会将源文件或文件夹整体移动至目标目录下
    例如:move("/usr/aaa", "/usr/bbb")结果为:"/usr/bbb/aaa"
    static byte[]
    读取文件的所有内容为byte数组
    static Path
    rename(Path path, String newName, boolean isOverride)
    修改文件或目录的文件名,不变更路径,只是简单修改文件名
    static Path
    subPath(Path path, int fromIndex, int toIndex)
    获取指定位置的子路径部分,支持负数,例如起始为-1表示从后数第一个节点位置
    static Path
    将Path路径转换为标准的绝对路径
    static void
    walkFiles(Path start, int maxDepth, FileVisitor<? super Path> visitor)
    遍历指定path下的文件并做处理
    static void
    walkFiles(Path start, FileVisitor<? super Path> visitor)
    遍历指定path下的文件并做处理

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • PathUtil

      public PathUtil()
  • Method Details

    • isDirEmpty

      public static boolean isDirEmpty(Path dirPath)
      目录是否为空
      Parameters:
      dirPath - 目录
      Returns:
      是否为空
      Throws:
      RuntimeException - IOException
    • loopFiles

      public static List<File> loopFiles(Path path, int maxDepth, FileFilter fileFilter)
      递归遍历目录以及子目录中的所有文件
      如果提供path为文件,直接返回过滤结果
      Parameters:
      path - 当前遍历文件或目录
      maxDepth - 遍历最大深度,-1表示遍历到没有目录为止
      fileFilter - 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录,null表示接收全部文件
      Returns:
      文件列表
      Since:
      5.4.1
    • walkFiles

      public static void walkFiles(Path start, FileVisitor<? super Path> visitor)
      遍历指定path下的文件并做处理
      Parameters:
      start - 起始路径,必须为目录
      visitor - FileVisitor 接口,用于自定义在访问文件时,访问目录前后等节点做的操作
      Since:
      5.5.2
      See Also:
    • walkFiles

      public static void walkFiles(Path start, int maxDepth, FileVisitor<? super Path> visitor)
      遍历指定path下的文件并做处理
      Parameters:
      start - 起始路径,必须为目录
      maxDepth - 最大遍历深度,-1表示不限制深度
      visitor - FileVisitor 接口,用于自定义在访问文件时,访问目录前后等节点做的操作
      Since:
      4.6.3
      See Also:
    • del

      public static boolean del(Path path) throws RuntimeException
      删除文件或者文件夹,不追踪软链
      注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹
      某个文件删除失败会终止删除操作
      Parameters:
      path - 文件对象
      Returns:
      成功与否
      Throws:
      RuntimeException - IO异常
      Since:
      4.4.2
    • copyFile

      public static Path copyFile(Path src, Path dest, StandardCopyOption... options) throws RuntimeException
      通过JDK7+的 Files.copy(Path, Path, CopyOption...) 方法拷贝文件
      此方法不支持递归拷贝目录,如果src传入是目录,只会在目标目录中创建空目录
      Parameters:
      src - 源文件路径,如果为目录只在目标中创建新目录
      dest - 目标文件或目录,如果为目录使用与源文件相同的文件名
      options - StandardCopyOption
      Returns:
      Path
      Throws:
      RuntimeException - IO异常
    • copyFile

      public static Path copyFile(Path src, Path target, CopyOption... options) throws RuntimeException
      通过JDK7+的 Files.copy(Path, Path, CopyOption...) 方法拷贝文件
      此方法不支持递归拷贝目录,如果src传入是目录,只会在目标目录中创建空目录
      Parameters:
      src - 源文件路径,如果为目录只在目标中创建新目录
      target - 目标文件或目录,如果为目录使用与源文件相同的文件名
      options - StandardCopyOption
      Returns:
      Path
      Throws:
      RuntimeException - IO异常
      Since:
      5.4.1
    • copy

      public static Path copy(Path src, Path target, CopyOption... options) throws RuntimeException
      拷贝文件或目录,拷贝规则为:
      • 源文件为目录,目标也为目录或不存在,则拷贝整个目录到目标目录下
      • 源文件为文件,目标为目录或不存在,则拷贝文件到目标目录下
      • 源文件为文件,目标也为文件,则在StandardCopyOption.REPLACE_EXISTING情况下覆盖之
      Parameters:
      src - 源文件路径,如果为目录会在目标中创建新目录
      target - 目标文件或目录,如果为目录使用与源文件相同的文件名
      options - StandardCopyOption
      Returns:
      Path
      Throws:
      RuntimeException - IO异常
      Since:
      5.5.1
    • copyContent

      public static Path copyContent(Path src, Path target, CopyOption... options) throws RuntimeException
      拷贝目录下的所有文件或目录到目标目录中,此方法不支持文件对文件的拷贝。
      • 源文件为目录,目标也为目录或不存在,则拷贝目录下所有文件和目录到目标目录下
      • 源文件为文件,目标为目录或不存在,则拷贝文件到目标目录下
      Parameters:
      src - 源文件路径,如果为目录只在目标中创建新目录
      target - 目标目录,如果为目录使用与源文件相同的文件名
      options - StandardCopyOption
      Returns:
      Path
      Throws:
      RuntimeException - IO异常
      Since:
      5.5.1
    • isDirectory

      public static boolean isDirectory(Path path)
      判断是否为目录,如果file为null,则返回false
      此方法不会追踪到软链对应的真实地址,即软链被当作文件
      Parameters:
      path - Path
      Returns:
      如果为目录true
      Since:
      5.5.1
    • isDirectory

      public static boolean isDirectory(Path path, boolean isFollowLinks)
      判断是否为目录,如果file为null,则返回false
      Parameters:
      path - Path
      isFollowLinks - 是否追踪到软链对应的真实地址
      Returns:
      如果为目录true
      Since:
      3.1.0
    • getPathEle

      public static Path getPathEle(Path path, int index)
      获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置
      Parameters:
      path - 路径
      index - 路径节点位置,支持负数(负数从后向前计数)
      Returns:
      获取的子路径
      Since:
      3.1.2
    • getLastPathEle

      public static Path getLastPathEle(Path path)
      获取指定位置的最后一个子路径部分
      Parameters:
      path - 路径
      Returns:
      获取的最后一个子路径
      Since:
      3.1.2
    • subPath

      public static Path subPath(Path path, int fromIndex, int toIndex)
      获取指定位置的子路径部分,支持负数,例如起始为-1表示从后数第一个节点位置
      Parameters:
      path - 路径
      fromIndex - 起始路径节点(包括)
      toIndex - 结束路径节点(不包括)
      Returns:
      获取的子路径
      Since:
      3.1.2
    • getAttributes

      public static BasicFileAttributes getAttributes(Path path, boolean isFollowLinks) throws RuntimeException
      获取文件属性
      Parameters:
      path - 文件路径Path
      isFollowLinks - 是否跟踪到软链对应的真实路径
      Returns:
      BasicFileAttributes
      Throws:
      RuntimeException - IO异常
    • getInputStream

      public static BufferedInputStream getInputStream(Path path) throws RuntimeException
      获得输入流
      Parameters:
      path - Path
      Returns:
      输入流
      Throws:
      RuntimeException - 文件未找到
      Since:
      4.0.0
    • getUtf8Reader

      public static BufferedReader getUtf8Reader(Path path) throws RuntimeException
      获得一个文件读取器
      Parameters:
      path - 文件Path
      Returns:
      BufferedReader对象
      Throws:
      RuntimeException - IO异常
      Since:
      4.0.0
    • getReader

      public static BufferedReader getReader(Path path, Charset charset) throws RuntimeException
      获得一个文件读取器
      Parameters:
      path - 文件Path
      charset - 字符集
      Returns:
      BufferedReader对象
      Throws:
      RuntimeException - IO异常
      Since:
      4.0.0
    • readBytes

      public static byte[] readBytes(Path path)
      读取文件的所有内容为byte数组
      Parameters:
      path - 文件
      Returns:
      byte数组
      Since:
      5.5.4
    • getOutputStream

      public static BufferedOutputStream getOutputStream(Path path) throws RuntimeException
      获得输出流
      Parameters:
      path - Path
      Returns:
      输入流
      Throws:
      RuntimeException - 文件未找到
      Since:
      5.4.1
    • rename

      public static Path rename(Path path, String newName, boolean isOverride)
      修改文件或目录的文件名,不变更路径,只是简单修改文件名
       FileUtil.rename(file, "aaa.jpg", false) xx/xx.png =》xx/aaa.jpg
       
      Parameters:
      path - 被修改的文件
      newName - 新的文件名,包括扩展名
      isOverride - 是否覆盖目标文件
      Returns:
      目标文件Path
      Since:
      5.4.1
    • move

      public static Path move(Path src, Path target, boolean isOverride)
      移动文件或目录
      当目标是目录时,会将源文件或文件夹整体移动至目标目录下
      例如:move("/usr/aaa", "/usr/bbb")结果为:"/usr/bbb/aaa"
      Parameters:
      src - 源文件或目录路径
      target - 目标路径,如果为目录,则移动到此目录下
      isOverride - 是否覆盖目标文件
      Returns:
      目标文件Path
      Since:
      5.5.1
    • equals

      public static boolean equals(Path file1, Path file2) throws RuntimeException
      检查两个文件是否是同一个文件
      所谓文件相同,是指Path对象是否指向同一个文件或文件夹
      Parameters:
      file1 - 文件1
      file2 - 文件2
      Returns:
      是否相同
      Throws:
      RuntimeException - IO异常
      Since:
      5.4.1
      See Also:
    • isFile

      public static boolean isFile(Path path, boolean isFollowLinks)
      判断是否为文件,如果file为null,则返回false
      Parameters:
      path - 文件
      isFollowLinks - 是否跟踪软链(快捷方式)
      Returns:
      如果为文件true
      See Also:
    • isSymlink

      public static boolean isSymlink(Path path)
      判断是否为符号链接文件
      Parameters:
      path - 被检查的文件
      Returns:
      是否为符号链接文件
      Since:
      4.4.2
    • exists

      public static boolean exists(Path path, boolean isFollowLinks)
      判断文件或目录是否存在
      Parameters:
      path - 文件
      isFollowLinks - 是否跟踪软链(快捷方式)
      Returns:
      是否存在
      Since:
      5.5.3
    • isSub

      public static boolean isSub(Path parent, Path sub)
      判断给定的目录是否为给定文件或文件夹的子目录
      Parameters:
      parent - 父目录
      sub - 子目录
      Returns:
      子目录是否为父目录的子目录
      Since:
      5.5.5
    • toAbsNormal

      public static Path toAbsNormal(Path path)
      将Path路径转换为标准的绝对路径
      Parameters:
      path - 文件或目录Path
      Returns:
      转换后的Path
      Since:
      5.5.5
    • getMimeType

      public static String getMimeType(Path file)
      获得文件的MimeType
      Parameters:
      file - 文件
      Returns:
      MimeType
      Since:
      5.5.5
      See Also:
    • mkdir

      public static Path mkdir(Path dir)
      创建所给目录及其父目录
      Parameters:
      dir - 目录
      Returns:
      目录
      Since:
      5.5.7
    • mkParentDirs

      public static Path mkParentDirs(Path path)
      创建所给文件或目录的父目录
      Parameters:
      path - 文件或目录
      Returns:
      父目录
      Since:
      5.5.7
    • delFile

      protected static void delFile(Path path) throws IOException
      删除文件,不追踪软链
      Parameters:
      path - 文件对象
      Throws:
      IOException - IO异常
      Since:
      5.7.7