D:\JAVA\bin\java.exe "-javaagent:D:\JAVA\IntelliJ IDEA 2022.3.2\lib\idea_rt.jar=52525:D:\JAVA\IntelliJ IDEA 2022.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\JAVA\untitled4\out\production\untitled4 UnZipTester Exception in thread "main" java.lang.IllegalArgumentException: malformed input off : 12, length : 1 at java.base/java.lang.String.throwMalformed(String.java:1252) at java.base/java.lang.String.decodeUTF8_UTF16(String.java:1119) at java.base/java.lang.String.newStringUTF8NoRepl(String.java:741) at java.base/java.lang.System$2.newStringUTF8NoRepl(System.java:2462) at java.base/java.util.zip.ZipCoder$UTF8ZipCoder.toString(ZipCoder.java:199) at java.base/java.util.zip.ZipCoder.toString(ZipCoder.java:66) at java.base/java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:302) at java.base/java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:125) at Unzip.doUnZip(Unzip.java:39) at UnZipTester.main(UnZipTester.java:8) Caused by: java.nio.charset.MalformedInputException: Input length = 1 ... 10 more出现这样的错误
时间: 2023-09-17 15:11:53 浏览: 289
JAVA中报错
这个错误可能是因为文件名中含有不合法的字符引起的。在解压缩过程中,Java 使用 UTF-8 编码来处理文件名,如果文件名中的字符不符合 UTF-8 格式,就会出现这个错误。
你可以尝试使用其他解压缩工具来解压缩文件,或者修改文件名中的特殊字符。如果无法修改文件名,你可以尝试使用 Java 的 NIO 库来解决该问题。具体实现方法可以参考以下代码:
```java
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile), Charset.forName("GBK"));
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
String fileName = entry.getName();
fileName = new String(fileName.getBytes("GBK"), "UTF-8");
// ...
}
```
这里使用了 GBK 编码来读取 zip 文件,并将文件名转换为 UTF-8 编码,以避免出现编码问题。
阅读全文