mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
!557 针对issue#I4W5FS@Gitee存在其他特殊情况处理
Merge pull request !557 from Husky/v5-dev
This commit is contained in:
commit
1fba8c75b0
@ -42,6 +42,11 @@ public class FileNameUtil {
|
||||
*/
|
||||
private static final Pattern FILE_NAME_INVALID_PATTERN_WIN = Pattern.compile("[\\\\/:*?\"<>|]");
|
||||
|
||||
/**
|
||||
* 特殊后缀
|
||||
*/
|
||||
private static final CharSequence[] SPECIAL_SUFFIX = {"tar.bz2", "tar.Z", "tar.gz", "tar.xz"};
|
||||
|
||||
|
||||
// -------------------------------------------------------------------------------------------- name start
|
||||
|
||||
@ -223,8 +228,10 @@ public class FileNameUtil {
|
||||
return StrUtil.EMPTY;
|
||||
} else {
|
||||
// issue#I4W5FS@Gitee
|
||||
if(fileName.endsWith("tar.gz")){
|
||||
return "tar.gz";
|
||||
int secondToLastIndex = fileName.substring(0, index).lastIndexOf(StrUtil.DOT);
|
||||
String substr = fileName.substring(secondToLastIndex == -1 ? index : secondToLastIndex + 1);
|
||||
if (StrUtil.containsAny(substr, SPECIAL_SUFFIX)) {
|
||||
return substr;
|
||||
}
|
||||
|
||||
String ext = fileName.substring(index + 1);
|
||||
|
@ -396,6 +396,18 @@ public class FileUtilTest {
|
||||
path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\fff.tar.gz" : "~/Desktop/hutool/fff.tar.gz";
|
||||
mainName = FileUtil.extName(path);
|
||||
Assert.assertEquals("tar.gz", mainName);
|
||||
|
||||
path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\fff.tar.Z" : "~/Desktop/hutool/fff.tar.Z";
|
||||
mainName = FileUtil.extName(path);
|
||||
Assert.assertEquals("tar.Z", mainName);
|
||||
|
||||
path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\fff.tar.bz2" : "~/Desktop/hutool/fff.tar.bz2";
|
||||
mainName = FileUtil.extName(path);
|
||||
Assert.assertEquals("tar.bz2", mainName);
|
||||
|
||||
path = FileUtil.isWindows() ? "d:\\aaa\\bbb\\cc\\fff.tar.xz" : "~/Desktop/hutool/fff.tar.xz";
|
||||
mainName = FileUtil.extName(path);
|
||||
Assert.assertEquals("tar.xz", mainName);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
Reference in New Issue
Block a user