Package org.miaixz.bus.core.io.file
Class PathResolve
java.lang.Object
org.miaixz.bus.core.io.file.PathResolve
- Direct Known Subclasses:
FileKit
NIO中Path对象操作封装
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void清空目录static Pathcopy(InputStream src, Path target, CopyOption... options) 通过JDK7+的Files.copy(InputStream, Path, CopyOption...)方法拷贝文件static longcopy(Path src, OutputStream out) 通过JDK7+的Files.copy(InputStream, Path, CopyOption...)方法拷贝文件static Pathcopy(Path src, Path target, CopyOption... options) 复制src到target中 src路径和target路径相同时,不执行操作 src为文件,target为已存在目录,则拷贝到目录下,文件名不变。 src为文件,target为不存在路径,则目标以文件对待(自动创建父级目录),相当于拷贝后重命名,比如:/dest/aaa,如果aaa不存在,则aaa被当作文件名 src为文件,target是一个已存在的文件,则当CopyOption设为覆盖时会被覆盖,默认不覆盖,抛出FileAlreadyExistsExceptionsrc为目录,target为已存在目录,整个src目录连同其目录拷贝到目标目录中 src为目录,target为不存在路径,则自动创建目标为新目录,并只拷贝src内容到目标目录中,相当于重命名目录。 src为目录,target为文件,抛出IllegalArgumentExceptionstatic Pathcopy(Resource src, Path target, CopyOption... options) 拷贝资源到目标文件 如果src为FileResource,调用文件拷贝。 其它,调用JDK7+的Files.copy(InputStream, Path, CopyOption...)。static PathcopyContent(Path src, Path target, CopyOption... options) 复制src的内容到target中 src路径和target路径相同时,不执行操作 src为文件,target为已存在目录,则拷贝到目录下,文件名不变。 src为文件,target为不存在路径,则目标以文件对待(自动创建父级目录),相当于拷贝后重命名,比如:/dest/aaa,如果aaa不存在,则aaa被当作文件名 src为文件,target是一个已存在的文件,则当CopyOption设为覆盖时会被覆盖,默认不覆盖,抛出FileAlreadyExistsExceptionsrc为目录,target为已存在目录,整个src目录下的内容拷贝到目标目录中 src为目录,target为不存在路径,则自动创建目标为新目录,整个src目录下的内容拷贝到目标目录中,相当于重命名目录。 src为目录,target为文件,抛出IO异常static PathcreateTempFile(String prefix, String suffix, Path dir) 创建临时文件static boolean检查两个文件是否是同一个文件 所谓文件相同,是指Path对象是否指向同一个文件或文件夹static boolean判断文件或目录是否存在static BasicFileAttributesgetAttributes(Path path, boolean isFollowLinks) 获取文件属性static Set<FileVisitOption> getFileVisitOption(boolean isFollowLinks) 构建是否追踪软链的选项static BufferedInputStreamgetInputStream(Path path) 获得输入流static PathgetLastPathEle(Path path) 获取指定位置的最后一个子路径部分static LinkOption[]getLinkOptions(boolean isFollowLinks) 构建是否追踪软链的选项static StringgetMimeType(Path file) 获得文件的MimeTypestatic String获取Path文件名static BufferedOutputStreamgetOutputStream(Path path) 获得输出流static PathgetPathEle(Path path, int index) 获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置static BufferedReader获得一个文件读取器static BufferedReadergetUtf8Reader(Path path) 获得一个文件读取器static booleanisDirectory(Path path) 判断是否为目录,如果file为null,则返回false 此方法不会追踪到软链对应的真实地址,即软链被当作文件static booleanisDirectory(Path path, boolean isFollowLinks) 判断是否为目录,如果file为null,则返回falsestatic booleanisDirEmpty(Path dirPath) 目录是否为空static booleanisExistsAndNotDirectory(Path path, boolean isFollowLinks) 判断是否存在且为非目录 如果path为null,返回false如果path不存在,返回falsestatic boolean判断是否为文件,如果file为null,则返回falsestatic boolean判断是否为其它类型文件,即非文件、非目录、非链接。static booleanisSameFile(Path file1, Path file2) 检查两个文件是否是同一个文件 所谓文件相同,是指Path对象是否指向同一个文件或文件夹static boolean判断给定的目录是否为给定文件或文件夹的子目录static boolean判断是否为符号链接文件loopFiles(Path path, int maxDepth, boolean isFollowLinks, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果loopFiles(Path path, int maxDepth, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果loopFiles(Path path, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果static Path创建所给目录及其父目录static PathmkParentDirs(Path path) 创建所给文件或目录的父目录static Path移动文件或目录到目标中,例如: 如果src和target为同一文件或目录,直接返回target。 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行。 如果src为文件,target为文件,则按照是否覆盖参数执行。 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d。 如果src为目录,target为文件,抛出IllegalArgumentException如果src为目录,target为目录,则将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b" 如果src为目录,target为不存在的路径,则重命名src到target,如move("/a/b", "/c/d"),结果为"/c/d/",相当于b重命名为dstatic PathmoveContent(Path src, Path target, boolean isOverride) 移动文件或目录内容到目标中,例如: 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行。 如果src为文件,target为文件,则按照是否覆盖参数执行。 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d。 如果src为目录,target为文件,抛出IllegalArgumentException如果src为目录,target为目录,则将源目录下的内容移动到目标路径目录中,源目录不删除。 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录下的内容移动到目标路径目录中,源目录不删除。static Path拼接多个路径static Path拼接多个路径,static byte[]读取文件的所有内容为byte数组static void删除文件或者文件夹,不追踪软链 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作static Path修改文件或目录的文件名,不变更路径,只是简单修改文件名static Path获取指定位置的子路径部分,支持负数,例如起始为-1表示从后数第一个节点位置static PathtoAbsNormal(Path path) 将Path路径转换为标准的绝对路径 如果Path.isAbsolute()为true,表示已经是绝对路径,返回本身 如果是相对路径,则返回相对于系统默认目录的路径(一般为项目路径)static PathtoRealPath(Path path) 获取实际路径,路径文件必须存在 如果给定Path是软链接(符号链接),则返回指向的实际链接 如果路径不存在,会直接抛出NoSuchFileException异常 无论给定是何种类型的路径,返回都是唯一的路径(总是equals)static voidwalkFiles(Path start, int maxDepth, boolean isFollowLinks, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理static voidwalkFiles(Path start, int maxDepth, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理static voidwalkFiles(Path start, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理
-
Constructor Details
-
PathResolve
public PathResolve()
-
-
Method Details
-
of
拼接多个路径- Parameters:
firstPath- 第一个路径paths- 其它路径- Returns:
- 拼接后的路径
- See Also:
-
of
拼接多个路径,- Parameters:
firstPath- 第一个路径paths- 其它路径- Returns:
- 拼接后的路径
-
isDirEmpty
目录是否为空- Parameters:
dirPath- 目录- Returns:
- 是否为空
- Throws:
InternalException- IOException
-
loopFiles
递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果- Parameters:
path- 当前遍历文件或目录fileFilter- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录,null表示接收全部文件- Returns:
- 文件列表
-
loopFiles
递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果- Parameters:
path- 当前遍历文件或目录maxDepth- 遍历最大深度,-1表示遍历到没有目录为止fileFilter- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录,null表示接收全部文件- Returns:
- 文件列表
-
loopFiles
public static List<File> loopFiles(Path path, int maxDepth, boolean isFollowLinks, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果- Parameters:
path- 当前遍历文件或目录maxDepth- 遍历最大深度,-1表示遍历到没有目录为止isFollowLinks- 是否跟踪软链(快捷方式)fileFilter- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录,null表示接收全部文件- Returns:
- 文件列表
-
walkFiles
遍历指定path下的文件并做处理- Parameters:
start- 起始路径,必须为目录visitor-FileVisitor接口,用于自定义在访问文件时,访问目录前后等节点做的操作- See Also:
-
walkFiles
遍历指定path下的文件并做处理- Parameters:
start- 起始路径,必须为目录maxDepth- 最大遍历深度,-1表示不限制深度visitor-FileVisitor接口,用于自定义在访问文件时,访问目录前后等节点做的操作- See Also:
-
walkFiles
public static void walkFiles(Path start, int maxDepth, boolean isFollowLinks, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理- Parameters:
start- 起始路径,必须为目录maxDepth- 最大遍历深度,-1表示不限制深度isFollowLinks- 是否追踪到软链对应的真实地址visitor-FileVisitor接口,用于自定义在访问文件时,访问目录前后等节点做的操作- See Also:
-
remove
删除文件或者文件夹,不追踪软链 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作- Parameters:
path- 文件对象- Throws:
InternalException- IO异常
-
clean
清空目录- Parameters:
path- 目录路径
-
copy
拷贝资源到目标文件- 如果src为
FileResource,调用文件拷贝。 - 其它,调用JDK7+的
Files.copy(InputStream, Path, CopyOption...)。
- Parameters:
src- 源文件资源Resource实现target- 目标文件或目录,如果为目录使用与源文件相同的文件名options-StandardCopyOption- Returns:
- 目标Path
- Throws:
InternalException- IO异常
- 如果src为
-
copy
public static Path copy(InputStream src, Path target, CopyOption... options) throws InternalException 通过JDK7+的Files.copy(InputStream, Path, CopyOption...)方法拷贝文件- Parameters:
src- 源文件流,使用后不闭流target- 目标文件或目录,如果为目录使用与源文件相同的文件名options-StandardCopyOption- Returns:
- 目标Path
- Throws:
InternalException- IO异常
-
copy
通过JDK7+的Files.copy(InputStream, Path, CopyOption...)方法拷贝文件- Parameters:
src- 源文件流,使用后不闭流out- 目标流- Returns:
- 拷贝bytes数
- Throws:
InternalException- IO异常
-
copy
复制src到target中- src路径和target路径相同时,不执行操作
- src为文件,target为已存在目录,则拷贝到目录下,文件名不变。
- src为文件,target为不存在路径,则目标以文件对待(自动创建父级目录),相当于拷贝后重命名,比如:/dest/aaa,如果aaa不存在,则aaa被当作文件名
- src为文件,target是一个已存在的文件,则当
CopyOption设为覆盖时会被覆盖,默认不覆盖,抛出FileAlreadyExistsException - src为目录,target为已存在目录,整个src目录连同其目录拷贝到目标目录中
- src为目录,target为不存在路径,则自动创建目标为新目录,并只拷贝src内容到目标目录中,相当于重命名目录。
- src为目录,target为文件,抛出
IllegalArgumentException
- Parameters:
src- 源文件路径,如果为目录会在目标中创建新目录target- 目标文件或目录,如果为目录使用与源文件相同的文件名options-StandardCopyOption- Returns:
- Path
- Throws:
InternalException- IO异常
-
copyContent
public static Path copyContent(Path src, Path target, CopyOption... options) throws InternalException 复制src的内容到target中- src路径和target路径相同时,不执行操作
- src为文件,target为已存在目录,则拷贝到目录下,文件名不变。
- src为文件,target为不存在路径,则目标以文件对待(自动创建父级目录),相当于拷贝后重命名,比如:/dest/aaa,如果aaa不存在,则aaa被当作文件名
- src为文件,target是一个已存在的文件,则当
CopyOption设为覆盖时会被覆盖,默认不覆盖,抛出FileAlreadyExistsException - src为目录,target为已存在目录,整个src目录下的内容拷贝到目标目录中
- src为目录,target为不存在路径,则自动创建目标为新目录,整个src目录下的内容拷贝到目标目录中,相当于重命名目录。
- src为目录,target为文件,抛出IO异常
- Parameters:
src- 源文件路径,如果为目录只在目标中创建新目录target- 目标目录,如果为目录使用与源文件相同的文件名options-StandardCopyOption- Returns:
- Path
- Throws:
InternalException- IO异常
-
isDirectory
判断是否为目录,如果file为null,则返回false 此方法不会追踪到软链对应的真实地址,即软链被当作文件- Parameters:
path-Path- Returns:
- 如果为目录true
-
isExistsAndNotDirectory
判断是否存在且为非目录- 如果path为
null,返回false - 如果path不存在,返回
false
- Parameters:
path-PathisFollowLinks- 是否追踪到软链对应的真实地址- Returns:
- 如果为目录true
- 如果path为
-
isDirectory
判断是否为目录,如果file为null,则返回false- Parameters:
path-PathisFollowLinks- 是否追踪到软链对应的真实地址- Returns:
- 如果为目录true
-
getPathEle
获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置- Parameters:
path- 路径index- 路径节点位置,支持负数(负数从后向前计数)- Returns:
- 获取的子路径
-
getLastPathEle
获取指定位置的最后一个子路径部分- Parameters:
path- 路径- Returns:
- 获取的最后一个子路径
-
subPath
获取指定位置的子路径部分,支持负数,例如起始为-1表示从后数第一个节点位置- Parameters:
path- 路径fromIndex- 起始路径节点(包括)toIndex- 结束路径节点(不包括)- Returns:
- 获取的子路径
-
getAttributes
public static BasicFileAttributes getAttributes(Path path, boolean isFollowLinks) throws InternalException 获取文件属性- Parameters:
path- 文件路径PathisFollowLinks- 是否跟踪到软链对应的真实路径- Returns:
BasicFileAttributes- Throws:
InternalException- IO异常
-
getInputStream
获得输入流- Parameters:
path- Path- Returns:
- 输入流
- Throws:
InternalException- 文件未找到
-
getUtf8Reader
获得一个文件读取器- Parameters:
path- 文件Path- Returns:
- BufferedReader对象
- Throws:
InternalException- IO异常
-
getReader
获得一个文件读取器- Parameters:
path- 文件Pathcharset- 字符集- Returns:
- BufferedReader对象
- Throws:
InternalException- IO异常
-
readBytes
读取文件的所有内容为byte数组- Parameters:
path- 文件- Returns:
- byte数组
-
getOutputStream
获得输出流- Parameters:
path- Path- Returns:
- 输入流
- Throws:
InternalException- 文件未找到
-
rename
修改文件或目录的文件名,不变更路径,只是简单修改文件名FileKit.rename(file, "aaa.jpg", false) xx/xx.png = xx/aaa.jpg FileKit.rename(dir, "dir2", false) xx/xx/ = xx/dir2/
- Parameters:
path- 被修改的文件newName- 新的文件名,包括扩展名isOverride- 是否覆盖目标文件- Returns:
- 目标文件Path
-
move
移动文件或目录到目标中,例如:- 如果src和target为同一文件或目录,直接返回target。
- 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行。
- 如果src为文件,target为文件,则按照是否覆盖参数执行。
- 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d。
- 如果src为目录,target为文件,抛出
IllegalArgumentException - 如果src为目录,target为目录,则将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b"
- 如果src为目录,target为不存在的路径,则重命名src到target,如move("/a/b", "/c/d"),结果为"/c/d/",相当于b重命名为d
- Parameters:
src- 源文件或目录路径target- 目标路径,如果为目录,则移动到此目录下isOverride- 是否覆盖目标文件- Returns:
- 目标文件Path
-
moveContent
移动文件或目录内容到目标中,例如:- 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行。
- 如果src为文件,target为文件,则按照是否覆盖参数执行。
- 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d。
- 如果src为目录,target为文件,抛出
IllegalArgumentException - 如果src为目录,target为目录,则将源目录下的内容移动到目标路径目录中,源目录不删除。
- 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录下的内容移动到目标路径目录中,源目录不删除。
- Parameters:
src- 源文件或目录路径target- 目标路径,如果为目录,则移动到此目录下isOverride- 是否覆盖目标文件- Returns:
- 目标文件Path
-
equals
检查两个文件是否是同一个文件 所谓文件相同,是指Path对象是否指向同一个文件或文件夹- Parameters:
file1- 文件1file2- 文件2- Returns:
- 是否相同
- Throws:
InternalException- IO异常- See Also:
-
isSameFile
检查两个文件是否是同一个文件 所谓文件相同,是指Path对象是否指向同一个文件或文件夹- Parameters:
file1- 文件1,必须存在file2- 文件2,必须存在- Returns:
- 是否相同
- Throws:
InternalException- IO异常- See Also:
-
isFile
判断是否为文件,如果file为null,则返回false- Parameters:
path- 文件isFollowLinks- 是否跟踪软链(快捷方式)- Returns:
- 如果为文件true
- See Also:
-
isSymlink
判断是否为符号链接文件- Parameters:
path- 被检查的文件- Returns:
- 是否为符号链接文件
-
isOther
判断是否为其它类型文件,即非文件、非目录、非链接。- Parameters:
path- 被检查的文件(非空)- Returns:
- 是否为其它类型文件
-
exists
判断文件或目录是否存在- Parameters:
path- 文件,null返回falseisFollowLinks- 是否跟踪软链(快捷方式)- Returns:
- 是否存在
-
isSub
判断给定的目录是否为给定文件或文件夹的子目录- Parameters:
parent- 父目录sub- 子目录- Returns:
- 子目录是否为父目录的子目录
-
toAbsNormal
将Path路径转换为标准的绝对路径 如果Path.isAbsolute()为true,表示已经是绝对路径,返回本身 如果是相对路径,则返回相对于系统默认目录的路径(一般为项目路径)- Parameters:
path- 文件或目录Path- Returns:
- 转换后的Path
-
toRealPath
获取实际路径,路径文件必须存在 如果给定Path是软链接(符号链接),则返回指向的实际链接 如果路径不存在,会直接抛出NoSuchFileException异常 无论给定是何种类型的路径,返回都是唯一的路径(总是equals)- Parameters:
path- 路径- Returns:
- 实际路径
- Throws:
InternalException- IO异常,如文件不存在等
-
getMimeType
获得文件的MimeType- Parameters:
file- 文件- Returns:
- MimeType
- See Also:
-
mkdir
创建所给目录及其父目录- Parameters:
dir- 目录- Returns:
- 目录
-
mkParentDirs
创建所给文件或目录的父目录- Parameters:
path- 文件或目录- Returns:
- 父目录
-
getName
获取Path文件名- Parameters:
path-Path- Returns:
- 文件名
-
createTempFile
创建临时文件- Parameters:
prefix- 前缀,至少3个字符suffix- 后缀,如果null则使用默认.tmpdir- 临时文件创建的所在目录- Returns:
- 临时文件
- Throws:
InternalException- IO异常
-
getLinkOptions
构建是否追踪软链的选项- Parameters:
isFollowLinks- 是否追踪软链- Returns:
- 选项
-
getFileVisitOption
构建是否追踪软链的选项- Parameters:
isFollowLinks- 是否追踪软链- Returns:
- 选项
-