Package com.luna.common.file
Class FileNameUtil
java.lang.Object
com.luna.common.file.FileNameUtil
文件名相关工具类
- Since:
- 5.4.1
- Author:
- looly
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
针对ClassPath路径的伪协议前缀(兼容Spring): "classpath:"static final String
.class文件扩展名static final String
.jar文件扩展名static final String
.java文件扩展名static final String
URL 前缀表示文件: "file:"static final String
URL 前缀表示jar: "jar:"static final String
Jar路径以及内部文件路径的分界符: "!/"static final char
类Unix路径分隔符static final String
URL 协议表示文件: "file"static final String
URL 协议表示Jar文件: "jar"static final String
URL 协议表示JBoss VFS资源: "vfs"static final String
URL 协议表示JBoss文件: "vfsfile"static final String
URL 协议表示JBoss zip文件: "vfszip"static final String
URL 协议表示WebSphere文件: "wsjar"static final String
URL 协议表示zip文件: "zip"static final String
URL 前缀表示war: "war:"static final String
WAR路径及内部文件路径分界符static final char
Windows路径分隔符 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic String
cleanInvalid
(String fileName) 清除文件名中的在Windows下不支持的非法字符,包括: \ / : * ? " < > |static boolean
containsInvalid
(String fileName) 文件名中是否包含在Windows下不支持的非法字符,包括: \ / : * ? " < > |static String
获取文件扩展名(后缀名),扩展名不带“.”static String
获得文件的扩展名(后缀名),扩展名不带“.”static String
返回文件名static String
返回文件名static String
返回主文件名static String
返回主文件名static String
获取文件后缀名,扩展名不带“.”static String
获得文件后缀名,扩展名不带“.”static boolean
isAbsolutePath
(String path) 给定路径已经是绝对路径
此方法并没有针对路径做标准化,建议先执行normalize(String)
方法标准化路径后判断
绝对路径判断条件是: 以/开头的路径 满足类似于 c:/xxxxx,其中祖母随意,不区分大小写 满足类似于 d:\xxxxx,其中祖母随意,不区分大小写static boolean
根据文件名检查文件类型,忽略大小写static String
返回主文件名static String
返回主文件名static String
修复路径
如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留 1.static String
获得相对子路径static String
获得相对子路径,忽略大小写
-
Field Details
-
CLASSPATH_URL_PREFIX
针对ClassPath路径的伪协议前缀(兼容Spring): "classpath:"- See Also:
-
FILE_URL_PREFIX
URL 前缀表示文件: "file:"- See Also:
-
JAR_URL_PREFIX
URL 前缀表示jar: "jar:"- See Also:
-
WAR_URL_PREFIX
URL 前缀表示war: "war:"- See Also:
-
URL_PROTOCOL_FILE
URL 协议表示文件: "file"- See Also:
-
URL_PROTOCOL_JAR
URL 协议表示Jar文件: "jar"- See Also:
-
URL_PROTOCOL_ZIP
URL 协议表示zip文件: "zip"- See Also:
-
URL_PROTOCOL_WSJAR
URL 协议表示WebSphere文件: "wsjar"- See Also:
-
URL_PROTOCOL_VFSZIP
URL 协议表示JBoss zip文件: "vfszip"- See Also:
-
URL_PROTOCOL_VFSFILE
URL 协议表示JBoss文件: "vfsfile"- See Also:
-
URL_PROTOCOL_VFS
URL 协议表示JBoss VFS资源: "vfs"- See Also:
-
JAR_URL_SEPARATOR
Jar路径以及内部文件路径的分界符: "!/"- See Also:
-
WAR_URL_SEPARATOR
WAR路径及内部文件路径分界符- See Also:
-
EXT_JAVA
.java文件扩展名- See Also:
-
EXT_CLASS
.class文件扩展名- See Also:
-
EXT_JAR
.jar文件扩展名- See Also:
-
UNIX_SEPARATOR
public static final char UNIX_SEPARATOR类Unix路径分隔符- See Also:
-
WINDOWS_SEPARATOR
public static final char WINDOWS_SEPARATORWindows路径分隔符- See Also:
-
-
Constructor Details
-
FileNameUtil
public FileNameUtil()
-
-
Method Details
-
getName
返回文件名- Parameters:
file
- 文件- Returns:
- 文件名
- Since:
- 4.1.13
-
getName
返回文件名
"d:/test/aaa" 返回 "aaa" "/test/aaa.jpg" 返回 "aaa.jpg"
- Parameters:
filePath
- 文件- Returns:
- 文件名
- Since:
- 4.1.13
-
getSuffix
获取文件后缀名,扩展名不带“.”- Parameters:
file
- 文件- Returns:
- 扩展名
- Since:
- 5.3.8
- See Also:
-
getSuffix
获得文件后缀名,扩展名不带“.”- Parameters:
fileName
- 文件名- Returns:
- 扩展名
- Since:
- 5.3.8
- See Also:
-
getPrefix
返回主文件名- Parameters:
file
- 文件- Returns:
- 主文件名
- Since:
- 5.3.8
- See Also:
-
getPrefix
返回主文件名- Parameters:
fileName
- 完整文件名- Returns:
- 主文件名
- Since:
- 5.3.8
- See Also:
-
mainName
返回主文件名- Parameters:
file
- 文件- Returns:
- 主文件名
-
mainName
返回主文件名- Parameters:
fileName
- 完整文件名- Returns:
- 主文件名
-
extName
获取文件扩展名(后缀名),扩展名不带“.”- Parameters:
file
- 文件- Returns:
- 扩展名
-
extName
获得文件的扩展名(后缀名),扩展名不带“.”- Parameters:
fileName
- 文件名- Returns:
- 扩展名
-
cleanInvalid
清除文件名中的在Windows下不支持的非法字符,包括: \ / : * ? " < > |- Parameters:
fileName
- 文件名(必须不包括路径,否则路径符将被替换)- Returns:
- 清理后的文件名
- Since:
- 3.3.1
-
containsInvalid
文件名中是否包含在Windows下不支持的非法字符,包括: \ / : * ? " < > |- Parameters:
fileName
- 文件名(必须不包括路径,否则路径符将被替换)- Returns:
- 是否包含非法字符
- Since:
- 3.3.1
-
isType
根据文件名检查文件类型,忽略大小写- Parameters:
fileName
- 文件名,例如hutool.pngextNames
- 被检查的扩展名数组,同一文件类型可能有多种扩展名,扩展名不带“.”- Returns:
- 是否是指定扩展名的类型
- Since:
- 5.5.2
-
subPath
获得相对子路径,忽略大小写栗子:
dirPath: d:/aaa/bbb filePath: d:/aaa/bbb/ccc =》 ccc dirPath: d:/Aaa/bbb filePath: d:/aaa/bbb/ccc.txt =》 ccc.txt dirPath: d:/Aaa/bbb filePath: d:/aaa/bbb/ =》 ""
- Parameters:
dirPath
- 父路径filePath
- 文件路径- Returns:
- 相对子路径
-
subPath
获得相对子路径栗子:
dirPath: d:/aaa/bbb filePath: d:/aaa/bbb/ccc =》 ccc dirPath: d:/Aaa/bbb filePath: d:/aaa/bbb/ccc.txt =》 ccc.txt
- Parameters:
rootDir
- 绝对父路径file
- 文件- Returns:
- 相对子路径
-
normalize
修复路径
如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留- 1. 统一用 /
- 2. 多个 / 转换为一个 /
- 3. 去除左边空格
- 4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径
栗子:
"/foo//" =》 "/foo/" "/foo/./" =》 "/foo/" "/foo/../bar" =》 "/bar" "/foo/../bar/" =》 "/bar/" "/foo/../bar/../baz" =》 "/baz" "/../" =》 "/" "foo/bar/.." =》 "foo" "foo/../bar" =》 "bar" "foo/../../bar" =》 "bar" "//server/foo/../bar" =》 "/server/bar" "//server/../bar" =》 "/bar" "C:\\foo\\..\\bar" =》 "C:/bar" "C:\\..\\bar" =》 "C:/bar" "~/foo/../bar/" =》 "~/bar/" "~/../bar" =》 普通用户运行是'bar的home目录',ROOT用户运行是'/bar'
- Parameters:
path
- 原路径- Returns:
- 修复后的路径
-
isAbsolutePath
给定路径已经是绝对路径
此方法并没有针对路径做标准化,建议先执行normalize(String)
方法标准化路径后判断
绝对路径判断条件是:- 以/开头的路径
- 满足类似于 c:/xxxxx,其中祖母随意,不区分大小写
- 满足类似于 d:\xxxxx,其中祖母随意,不区分大小写
- Parameters:
path
- 需要检查的Path- Returns:
- 是否已经是绝对路径
-