Package com.luna.common.file
Class PathUtil
java.lang.Object
com.luna.common.file.PathUtil
NIO中Path对象操作封装
- Since:
- 5.4.1
- Author:
- looly
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic 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
删除文件或者文件夹,不追踪软链
注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹
某个文件删除失败会终止删除操作protected static void
删除文件,不追踪软链static boolean
检查两个文件是否是同一个文件
所谓文件相同,是指Path对象是否指向同一个文件或文件夹static boolean
判断文件或目录是否存在static BasicFileAttributes
getAttributes
(Path path, boolean isFollowLinks) 获取文件属性static BufferedInputStream
getInputStream
(Path path) 获得输入流static Path
getLastPathEle
(Path path) 获取指定位置的最后一个子路径部分static String
getMimeType
(Path file) 获得文件的MimeTypestatic BufferedOutputStream
getOutputStream
(Path path) 获得输出流static Path
getPathEle
(Path path, int index) 获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置static BufferedReader
获得一个文件读取器static BufferedReader
getUtf8Reader
(Path path) 获得一个文件读取器static boolean
isDirectory
(Path path) 判断是否为目录,如果file为null,则返回false
此方法不会追踪到软链对应的真实地址,即软链被当作文件static boolean
isDirectory
(Path path, boolean isFollowLinks) 判断是否为目录,如果file为null,则返回falsestatic boolean
isDirEmpty
(Path dirPath) 目录是否为空static boolean
判断是否为文件,如果file为null,则返回falsestatic boolean
判断给定的目录是否为给定文件或文件夹的子目录static boolean
判断是否为符号链接文件loopFiles
(Path path, int maxDepth, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件
如果提供path为文件,直接返回过滤结果static Path
创建所给目录及其父目录static Path
mkParentDirs
(Path path) 创建所给文件或目录的父目录static Path
移动文件或目录
当目标是目录时,会将源文件或文件夹整体移动至目标目录下
例如:move("/usr/aaa", "/usr/bbb")结果为:"/usr/bbb/aaa"static byte[]
读取文件的所有内容为byte数组static Path
修改文件或目录的文件名,不变更路径,只是简单修改文件名static Path
获取指定位置的子路径部分,支持负数,例如起始为-1表示从后数第一个节点位置static Path
toAbsNormal
(Path path) 将Path路径转换为标准的绝对路径static void
walkFiles
(Path start, int maxDepth, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理static void
walkFiles
(Path start, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理
-
Constructor Details
-
PathUtil
public PathUtil()
-
-
Method Details
-
isDirEmpty
目录是否为空- Parameters:
dirPath
- 目录- Returns:
- 是否为空
- Throws:
RuntimeException
- IOException
-
loopFiles
递归遍历目录以及子目录中的所有文件
如果提供path为文件,直接返回过滤结果- Parameters:
path
- 当前遍历文件或目录maxDepth
- 遍历最大深度,-1表示遍历到没有目录为止fileFilter
- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录,null表示接收全部文件- Returns:
- 文件列表
- Since:
- 5.4.1
-
walkFiles
遍历指定path下的文件并做处理- Parameters:
start
- 起始路径,必须为目录visitor
-FileVisitor
接口,用于自定义在访问文件时,访问目录前后等节点做的操作- Since:
- 5.5.2
- See Also:
-
walkFiles
遍历指定path下的文件并做处理- Parameters:
start
- 起始路径,必须为目录maxDepth
- 最大遍历深度,-1表示不限制深度visitor
-FileVisitor
接口,用于自定义在访问文件时,访问目录前后等节点做的操作- Since:
- 4.6.3
- See Also:
-
del
删除文件或者文件夹,不追踪软链
注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹
某个文件删除失败会终止删除操作- 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
通过JDK7+的Files.copy(Path, Path, CopyOption...)
方法拷贝文件
此方法不支持递归拷贝目录,如果src传入是目录,只会在目标目录中创建空目录- Parameters:
src
- 源文件路径,如果为目录只在目标中创建新目录target
- 目标文件或目录,如果为目录使用与源文件相同的文件名options
-StandardCopyOption
- Returns:
- Path
- Throws:
RuntimeException
- IO异常- Since:
- 5.4.1
-
copy
拷贝文件或目录,拷贝规则为:- 源文件为目录,目标也为目录或不存在,则拷贝整个目录到目标目录下
- 源文件为文件,目标为目录或不存在,则拷贝文件到目标目录下
- 源文件为文件,目标也为文件,则在
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
判断是否为目录,如果file为null,则返回false
此方法不会追踪到软链对应的真实地址,即软链被当作文件- Parameters:
path
-Path
- Returns:
- 如果为目录true
- Since:
- 5.5.1
-
isDirectory
判断是否为目录,如果file为null,则返回false- Parameters:
path
-Path
isFollowLinks
- 是否追踪到软链对应的真实地址- Returns:
- 如果为目录true
- Since:
- 3.1.0
-
getPathEle
获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置- Parameters:
path
- 路径index
- 路径节点位置,支持负数(负数从后向前计数)- Returns:
- 获取的子路径
- Since:
- 3.1.2
-
getLastPathEle
获取指定位置的最后一个子路径部分- Parameters:
path
- 路径- Returns:
- 获取的最后一个子路径
- Since:
- 3.1.2
-
subPath
获取指定位置的子路径部分,支持负数,例如起始为-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
获得输入流- Parameters:
path
- Path- Returns:
- 输入流
- Throws:
RuntimeException
- 文件未找到- Since:
- 4.0.0
-
getUtf8Reader
获得一个文件读取器- Parameters:
path
- 文件Path- Returns:
- BufferedReader对象
- Throws:
RuntimeException
- IO异常- Since:
- 4.0.0
-
getReader
获得一个文件读取器- Parameters:
path
- 文件Pathcharset
- 字符集- Returns:
- BufferedReader对象
- Throws:
RuntimeException
- IO异常- Since:
- 4.0.0
-
readBytes
读取文件的所有内容为byte数组- Parameters:
path
- 文件- Returns:
- byte数组
- Since:
- 5.5.4
-
getOutputStream
获得输出流- Parameters:
path
- Path- Returns:
- 输入流
- Throws:
RuntimeException
- 文件未找到- Since:
- 5.4.1
-
rename
修改文件或目录的文件名,不变更路径,只是简单修改文件名
FileUtil.rename(file, "aaa.jpg", false) xx/xx.png =》xx/aaa.jpg
- Parameters:
path
- 被修改的文件newName
- 新的文件名,包括扩展名isOverride
- 是否覆盖目标文件- Returns:
- 目标文件Path
- Since:
- 5.4.1
-
move
移动文件或目录
当目标是目录时,会将源文件或文件夹整体移动至目标目录下
例如:move("/usr/aaa", "/usr/bbb")结果为:"/usr/bbb/aaa"- Parameters:
src
- 源文件或目录路径target
- 目标路径,如果为目录,则移动到此目录下isOverride
- 是否覆盖目标文件- Returns:
- 目标文件Path
- Since:
- 5.5.1
-
equals
检查两个文件是否是同一个文件
所谓文件相同,是指Path对象是否指向同一个文件或文件夹- Parameters:
file1
- 文件1file2
- 文件2- Returns:
- 是否相同
- Throws:
RuntimeException
- IO异常- Since:
- 5.4.1
- See Also:
-
isFile
判断是否为文件,如果file为null,则返回false- Parameters:
path
- 文件isFollowLinks
- 是否跟踪软链(快捷方式)- Returns:
- 如果为文件true
- See Also:
-
isSymlink
判断是否为符号链接文件- Parameters:
path
- 被检查的文件- Returns:
- 是否为符号链接文件
- Since:
- 4.4.2
-
exists
判断文件或目录是否存在- Parameters:
path
- 文件isFollowLinks
- 是否跟踪软链(快捷方式)- Returns:
- 是否存在
- Since:
- 5.5.3
-
isSub
判断给定的目录是否为给定文件或文件夹的子目录- Parameters:
parent
- 父目录sub
- 子目录- Returns:
- 子目录是否为父目录的子目录
- Since:
- 5.5.5
-
toAbsNormal
将Path路径转换为标准的绝对路径- Parameters:
path
- 文件或目录Path- Returns:
- 转换后的Path
- Since:
- 5.5.5
-
getMimeType
获得文件的MimeType- Parameters:
file
- 文件- Returns:
- MimeType
- Since:
- 5.5.5
- See Also:
-
mkdir
创建所给目录及其父目录- Parameters:
dir
- 目录- Returns:
- 目录
- Since:
- 5.5.7
-
mkParentDirs
创建所给文件或目录的父目录- Parameters:
path
- 文件或目录- Returns:
- 父目录
- Since:
- 5.5.7
-
delFile
删除文件,不追踪软链- Parameters:
path
- 文件对象- Throws:
IOException
- IO异常- Since:
- 5.7.7
-