这个错误是因为你的zip文件中含有XZ压缩的文件,而Commons Compress库不支持XZ压缩方法。解决办法是使用支持XZ压缩的库来解压这个文件,比如Apache Commons Compress的XZ库。

你可以使用以下代码示例来解决这个问题:

import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.commons.compress.compressors.xz.XZCompressorInputStream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class UnzipXZFile {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream('input.zip');
            FileOutputStream fos = new FileOutputStream('output');

            ArchiveInputStream ais = new ZipArchiveInputStream(fis);
            ArchiveEntry entry;
            while ((entry = ais.getNextEntry()) != null) {
                if (!entry.isDirectory()) {
                    if (entry.getName().endsWith('.xz')) {
                        XZCompressorInputStream xzIn = new XZCompressorInputStream(ais);
                        byte[] buffer = new byte[1024];
                        int length;
                        while ((length = xzIn.read(buffer)) != -1) {
                            fos.write(buffer, 0, length);
                        }
                        xzIn.close();
                    } else {
                        // 处理其他类型的压缩文件
                    }
                }
            }

            ais.close();
            fos.close();

            System.out.println('解压完成');
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用ZipArchiveInputStream来读取zip文件中的条目,如果条目的后缀是'.xz',我们就使用XZCompressorInputStream来解压该条目。你需要将'input.zip'替换为你的zip文件路径,将'output'替换为你想要输出的文件路径。

这样,你就可以使用Apache Commons Compress的XZ库来解压含有XZ压缩文件的zip文件了。

Commons Compress 解压 Zip 报错 'Unsupported compression method 95 (XZ)' 如何解决

原文地址: https://www.cveoy.top/t/topic/GnF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录