fix listFileNames bug

This commit is contained in:
Looly 2020-01-11 10:36:39 +08:00
parent 067c0578d6
commit 21881a1609
4 changed files with 19 additions and 8 deletions

View File

@ -20,6 +20,7 @@
### Bug修复 ### Bug修复
* 【core 】 修复NumberUtil.mul中null的结果错误问题issue#I17Y4J@Gitee * 【core 】 修复NumberUtil.mul中null的结果错误问题issue#I17Y4J@Gitee
* 【core 】 修复当金额大于等于1亿时转换会多出一个万字的bugpr#715@Github * 【core 】 修复当金额大于等于1亿时转换会多出一个万字的bugpr#715@Github
* 【core 】 修复FileUtil.listFileNames位于jar内导致的文件找不到问题issue#listFileNames@Gitee
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------

View File

@ -342,7 +342,8 @@ public class FileUtil {
JarFile jarFile = null; JarFile jarFile = null;
try { try {
jarFile = new JarFile(path.substring(0, index)); jarFile = new JarFile(path.substring(0, index));
return ZipUtil.listFileNames(jarFile, path.substring(index + 1)); // 防止出现jar!/cn/hutool/这类路径导致文件找不到
return ZipUtil.listFileNames(jarFile, StrUtil.removePrefix(path.substring(index + 1), "/"));
} catch (IOException e) { } catch (IOException e) {
throw new IORuntimeException(StrUtil.format("Can not read file path of [{}]", path), e); throw new IORuntimeException(StrUtil.format("Can not read file path of [{}]", path), e);
} finally { } finally {

View File

@ -1,5 +1,11 @@
package cn.hutool.core.util; package cn.hutool.core.util;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.io.FastByteArrayOutputStream;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
@ -24,12 +30,6 @@ import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import cn.hutool.core.exceptions.UtilException;
import cn.hutool.core.io.FastByteArrayOutputStream;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
/** /**
* 压缩工具类 * 压缩工具类
* *
@ -828,7 +828,7 @@ public class ZipUtil {
* 获取Zip文件中指定目录下的所有文件只显示文件不显示目录 * 获取Zip文件中指定目录下的所有文件只显示文件不显示目录
* *
* @param zipFile Zip文件 * @param zipFile Zip文件
* @param dir 目录前缀 * @param dir 目录前缀目录前缀不包含开头的/
* @return 文件列表 * @return 文件列表
* @since 4.6.6 * @since 4.6.6
*/ */

View File

@ -229,6 +229,15 @@ public class FileUtilTest {
names = FileUtil.listFileNames("."); names = FileUtil.listFileNames(".");
Assert.assertTrue(names.contains("hutool.jpg")); Assert.assertTrue(names.contains("hutool.jpg"));
} }
@Test
@Ignore
public void listFileNamesInJarTest() {
List<String> names = FileUtil.listFileNames("d:/test/hutool-core-5.1.0.jar!/cn/hutool/core/util ");
for (String name : names) {
Console.log(name);
}
}
@Test @Test
@Ignore @Ignore