|
@@ -34,14 +34,12 @@ import java.nio.file.attribute.BasicFileAttributes;
|
|
|
import java.text.DecimalFormat;
|
|
import java.text.DecimalFormat;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
|
-import java.util.Collections;
|
|
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.EnumSet;
|
|
import java.util.EnumSet;
|
|
|
import java.util.LinkedList;
|
|
import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
-import java.util.jar.JarEntry;
|
|
|
|
|
import java.util.jar.JarFile;
|
|
import java.util.jar.JarFile;
|
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.zip.CRC32;
|
|
import java.util.zip.CRC32;
|
|
@@ -64,6 +62,7 @@ import cn.hutool.core.util.ClassUtil;
|
|
|
import cn.hutool.core.util.ReUtil;
|
|
import cn.hutool.core.util.ReUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.core.util.URLUtil;
|
|
import cn.hutool.core.util.URLUtil;
|
|
|
|
|
+import cn.hutool.core.util.ZipUtil;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 文件工具类
|
|
* 文件工具类
|
|
@@ -111,8 +110,6 @@ public class FileUtil {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- path = getAbsolutePath(path);
|
|
|
|
|
-
|
|
|
|
|
File file = file(path);
|
|
File file = file(path);
|
|
|
if (file.isDirectory()) {
|
|
if (file.isDirectory()) {
|
|
|
return file.listFiles();
|
|
return file.listFiles();
|
|
@@ -311,14 +308,13 @@ public class FileUtil {
|
|
|
*/
|
|
*/
|
|
|
public static List<String> listFileNames(String path) throws IORuntimeException {
|
|
public static List<String> listFileNames(String path) throws IORuntimeException {
|
|
|
if (path == null) {
|
|
if (path == null) {
|
|
|
- return null;
|
|
|
|
|
|
|
+ return new ArrayList<>(0);
|
|
|
}
|
|
}
|
|
|
- List<String> paths = new ArrayList<String>();
|
|
|
|
|
-
|
|
|
|
|
int index = path.lastIndexOf(FileUtil.JAR_PATH_EXT);
|
|
int index = path.lastIndexOf(FileUtil.JAR_PATH_EXT);
|
|
|
- if (index == -1) {
|
|
|
|
|
- // 普通目录路径
|
|
|
|
|
- File[] files = ls(path);
|
|
|
|
|
|
|
+ if (index < 0) {
|
|
|
|
|
+ // 普通目录
|
|
|
|
|
+ final List<String> paths = new ArrayList<String>();
|
|
|
|
|
+ final File[] files = ls(path);
|
|
|
for (File file : files) {
|
|
for (File file : files) {
|
|
|
if (file.isFile()) {
|
|
if (file.isFile()) {
|
|
|
paths.add(file.getName());
|
|
paths.add(file.getName());
|
|
@@ -327,31 +323,20 @@ public class FileUtil {
|
|
|
} else {
|
|
} else {
|
|
|
// jar文件
|
|
// jar文件
|
|
|
path = getAbsolutePath(path);
|
|
path = getAbsolutePath(path);
|
|
|
- if (false == StrUtil.endWith(path, UNIX_SEPARATOR)) {
|
|
|
|
|
- path = path + UNIX_SEPARATOR;
|
|
|
|
|
- }
|
|
|
|
|
// jar文件中的路径
|
|
// jar文件中的路径
|
|
|
index = index + FileUtil.JAR_FILE_EXT.length();
|
|
index = index + FileUtil.JAR_FILE_EXT.length();
|
|
|
JarFile jarFile = null;
|
|
JarFile jarFile = null;
|
|
|
try {
|
|
try {
|
|
|
jarFile = new JarFile(path.substring(0, index));
|
|
jarFile = new JarFile(path.substring(0, index));
|
|
|
- final String subPath = path.substring(index + 2);
|
|
|
|
|
- for (JarEntry entry : Collections.list(jarFile.entries())) {
|
|
|
|
|
- final String name = entry.getName();
|
|
|
|
|
- if (name.startsWith(subPath)) {
|
|
|
|
|
- final String nameSuffix = StrUtil.removePrefix(name, subPath);
|
|
|
|
|
- if (false == StrUtil.contains(nameSuffix, UNIX_SEPARATOR)) {
|
|
|
|
|
- paths.add(nameSuffix);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ return ZipUtil.listFileNames(jarFile, 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 {
|
|
|
IoUtil.close(jarFile);
|
|
IoUtil.close(jarFile);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- return paths;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ return new ArrayList<>(0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|