!557 针对issue#I4W5FS@Gitee存在其他特殊情况处理

Merge pull request !557 from Husky/v5-dev
This commit is contained in:
Looly 2022-03-04 07:20:41 +00:00 committed by Gitee
commit 1fba8c75b0
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 21 additions and 2 deletions

View File

@ -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);

View File

@ -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