at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.lang.String.throwMalformed(Unknown Source) ~[na:na]
at java.base/java.lang.String.decodeUTF8_UTF16(Unknown Source) ~[na:na]
at java.base/java.lang.String.newStringUTF8NoRepl(Unknown Source) ~[na:na]
at java.base/java.lang.Access.newStringUTF8NoRepl(Unknown Source) ~[na:na]
at java.base/java.util.zip.ZipCoder$UTF8ZipCoder.toString(Unknown Source) ~[na:na]
at java.base/java.util.zip.ZipCoder.toString(Unknown Source) ~[na:na]
at java.base/java.util.zip.ZipInputStream.readLOC(Unknown Source) ~[na:na]
at java.base/java.util.zip.ZipInputStream.getNextEntry(Unknown Source) ~[na:na]
at run.halo.app.infra.utils.FileUtils.unzip(FileUtils.java:100) ~[classes/:na]
系统信息
ubuntu22
使用的哪种方式运行?
Docker
发生了什么?
解压失败,建议优化解压缩的方法
相关日志输出
附加信息
/**
*/ public static void main(String[] args) { //已解压的文件路径,记得进入层级 Path sourcePath= Path.of("C:\Users\snz\Downloads\20240628001351-backup-xRIWk\20240628001351-backup-xRIWk"); //层级内生成新的压缩包 Path targetPath= sourcePath.resolve("example.zip"); try (var zos = new ZipOutputStream(Files.newOutputStream(targetPath))) { Files.walkFileTree(sourcePath, new SimpleFileVisitor<>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { checkDirectoryTraversal(sourcePath, file); var relativePath = sourcePath.relativize(file); var entry = new ZipEntry(relativePath.toString()); zos.putNextEntry(entry); Files.copy(file, zos); zos.closeEntry(); return super.visitFile(file, attrs); } }); } catch (IOException e) { throw new RuntimeException(e); } }