From 705a15c3e5a93154159c9184999d62ff3b84c136 Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 17 Sep 2022 22:37:07 +0800 Subject: [PATCH] fix code --- .../main/java/cn/hutool/core/io/FileUtil.java | 21 +++---------------- .../cn/hutool/core/io/file/FileNameUtil.java | 7 ++++++- .../cn/hutool/core/lang/ClassScanner.java | 8 +++---- .../main/java/cn/hutool/core/net/URLUtil.java | 8 +++---- .../hutool/core/io/file/FileNameUtilTest.java | 15 +++++++++++++ 5 files changed, 32 insertions(+), 27 deletions(-) create mode 100755 hutool-core/src/test/java/cn/hutool/core/io/file/FileNameUtilTest.java diff --git a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java index b4513830f..08ee37de2 100755 --- a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java @@ -68,22 +68,6 @@ import java.util.zip.Checksum; */ public class FileUtil extends PathUtil { - /** - * Class文件扩展名 - */ - public static final String CLASS_EXT = FileNameUtil.EXT_CLASS; - /** - * Jar文件扩展名 - */ - public static final String JAR_FILE_EXT = FileNameUtil.EXT_JAR; - /** - * 在Jar中的路径jar的扩展名形式 - */ - public static final String JAR_PATH_EXT = ".jar!"; - /** - * 当Path为文件形式时, path会加入一个表示文件的前缀 - */ - public static final String PATH_FILE_PRE = URLUtil.FILE_URL_PREFIX; /** * 文件路径分隔符
* 在Unix和Linux下 是{@code '/'}; 在Windows下是 {@code '\'} @@ -94,6 +78,7 @@ public class FileUtil extends PathUtil { * 在Unix和Linux下 是{@code ':'}; 在Windows下是 {@code ';'} */ public static final String PATH_SEPARATOR = File.pathSeparator; + /** * 绝对路径判断正则 */ @@ -271,7 +256,7 @@ public class FileUtil extends PathUtil { if (path == null) { return new ArrayList<>(0); } - int index = path.lastIndexOf(FileUtil.JAR_PATH_EXT); + int index = path.lastIndexOf(FileNameUtil.EXT_JAR_PATH); if (index < 0) { // 普通目录 final List paths = new ArrayList<>(); @@ -287,7 +272,7 @@ public class FileUtil extends PathUtil { // jar文件 path = getAbsolutePath(path); // jar文件中的路径 - index = index + FileUtil.JAR_FILE_EXT.length(); + index = index + FileNameUtil.EXT_JAR.length(); JarFile jarFile = null; try { jarFile = new JarFile(path.substring(0, index)); diff --git a/hutool-core/src/main/java/cn/hutool/core/io/file/FileNameUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/file/FileNameUtil.java index f548216ce..7cf2d7b40 100755 --- a/hutool-core/src/main/java/cn/hutool/core/io/file/FileNameUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/file/FileNameUtil.java @@ -28,6 +28,11 @@ public class FileNameUtil { */ public static final String EXT_JAR = ".jar"; + /** + * 在Jar中的路径jar的扩展名形式 + */ + public static final String EXT_JAR_PATH = ".jar!"; + /** * 类Unix路径分隔符 */ @@ -40,7 +45,7 @@ public class FileNameUtil { /** * Windows下文件名中的无效字符 */ - private static final Pattern FILE_NAME_INVALID_PATTERN_WIN = Pattern.compile("[\\\\/:*?\"<>|]"); + private static final Pattern FILE_NAME_INVALID_PATTERN_WIN = Pattern.compile("[\\\\/:*?\"<>|\r\n]"); /** * 特殊后缀 diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java b/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java index 64085972a..3efc5c1e2 100755 --- a/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java @@ -3,8 +3,8 @@ package cn.hutool.core.lang; import cn.hutool.core.classloader.ClassLoaderUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.iter.EnumerationIter; -import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; +import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.net.URLDecoder; import cn.hutool.core.net.URLUtil; @@ -298,14 +298,14 @@ public class ClassScanner implements Serializable { private void scanFile(final File file, final String rootDir) { if (file.isFile()) { final String fileName = file.getAbsolutePath(); - if (fileName.endsWith(FileUtil.CLASS_EXT)) { + if (fileName.endsWith(FileNameUtil.EXT_CLASS)) { final String className = fileName// // 8为classes长度,fileName.length() - 6为".class"的长度 .substring(rootDir.length(), fileName.length() - 6)// .replace(File.separatorChar, CharUtil.DOT);// //加入满足条件的类 addIfAccept(className); - } else if (fileName.endsWith(FileUtil.JAR_FILE_EXT)) { + } else if (fileName.endsWith(FileNameUtil.EXT_JAR)) { try { scanJar(new JarFile(file)); } catch (final IOException e) { @@ -332,7 +332,7 @@ public class ClassScanner implements Serializable { for (final JarEntry entry : new EnumerationIter<>(jar.entries())) { name = StrUtil.removePrefix(entry.getName(), StrUtil.SLASH); if (StrUtil.isEmpty(packagePath) || name.startsWith(this.packagePath)) { - if (name.endsWith(FileUtil.CLASS_EXT) && false == entry.isDirectory()) { + if (name.endsWith(FileNameUtil.EXT_CLASS) && false == entry.isDirectory()) { final String className = name// .substring(0, name.length() - 6)// .replace(CharUtil.SLASH, CharUtil.DOT);// diff --git a/hutool-core/src/main/java/cn/hutool/core/net/URLUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/URLUtil.java index 8b21a6387..6f127ec87 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/URLUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/URLUtil.java @@ -1,15 +1,15 @@ package cn.hutool.core.net; +import cn.hutool.core.classloader.ClassLoaderUtil; import cn.hutool.core.exceptions.UtilException; -import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.net.url.UrlQuery; -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.core.classloader.ClassLoaderUtil; import cn.hutool.core.text.StrUtil; +import cn.hutool.core.util.CharsetUtil; import java.io.BufferedReader; import java.io.File; @@ -438,7 +438,7 @@ public class URLUtil { public static boolean isJarFileURL(final URL url) { Assert.notNull(url, "URL must be not null"); return (URL_PROTOCOL_FILE.equals(url.getProtocol()) && // - url.getPath().toLowerCase().endsWith(FileUtil.JAR_FILE_EXT)); + url.getPath().toLowerCase().endsWith(FileNameUtil.EXT_JAR)); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/io/file/FileNameUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/io/file/FileNameUtilTest.java new file mode 100755 index 000000000..706cc4492 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/io/file/FileNameUtilTest.java @@ -0,0 +1,15 @@ +package cn.hutool.core.io.file; + +import org.junit.Assert; +import org.junit.Test; + +public class FileNameUtilTest { + @Test + public void cleanInvalidTest(){ + String name = FileNameUtil.cleanInvalid("1\n2\n"); + Assert.assertEquals("12", name); + + name = FileNameUtil.cleanInvalid("\r1\r\n2\n"); + Assert.assertEquals("12", name); + } +}