diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/io/file/FileNameUtil.java b/hutool-core/src/main/java/cn/hutool/v7/core/io/file/FileNameUtil.java index 0ed9b9d5dd..1b9f87b5fe 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/io/file/FileNameUtil.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/io/file/FileNameUtil.java @@ -132,6 +132,28 @@ public class FileNameUtil { } // endregion + /** + * 重命名文件主名称(不会修改后缀) + * + * @param filePath 文件 + * @param newFileMainName 新的文件主名称(不含后缀) + * @return 重命名后的文件名称 + */ + public static String renameMain(final String filePath, final String newFileMainName) { + String fileName = getName(filePath); + if (StrUtil.isBlank(fileName)) { + return newFileMainName; + } + + // 如果原始文件名称有后缀则保留 + final String suffix = getSuffix(fileName); + if (StrUtil.isBlank(suffix)) { + return newFileMainName; + } else { + return newFileMainName + "." + suffix; + } + } + // region ----- prefix and suffix /** * 获取文件后缀名,扩展名不带“.” diff --git a/hutool-core/src/test/java/cn/hutool/v7/core/io/file/FileNameUtilTest.java b/hutool-core/src/test/java/cn/hutool/v7/core/io/file/FileNameUtilTest.java index 4bfcf65355..33783267b5 100644 --- a/hutool-core/src/test/java/cn/hutool/v7/core/io/file/FileNameUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/v7/core/io/file/FileNameUtilTest.java @@ -63,4 +63,11 @@ public class FileNameUtilTest { public void normalizeBlankTest() { Assertions.assertEquals("C:/aaa ", FileNameUtil.normalize("C:\\aaa ")); } + + @Test + void renameMainTest() { + Assertions.assertEquals("1.pdf", FileNameUtil.renameMain("a.b.pdf", "1")); + Assertions.assertEquals("a.pdf", FileNameUtil.renameMain(null, "a.pdf")); + Assertions.assertEquals("a.pdf", FileNameUtil.renameMain("", "a.pdf")); + } }