如何在java中读取RPM的内容

如何在java中读取RPM的内容,java,rpm,Java,Rpm,我正在寻找一种在java运行时读取RPM内容的方法 有人建议使用7zip在运行时使用系统命令7zip解包和/或提取RPM 该解决方案有两个缺点: 它依赖于平台(因为命令将特定于一个操作系统) 它涉及第三方软件 有什么想法吗 编辑: 我想沿着罗伯特的路走。这是我的密码: String file = "MyRpm.rpm"; CpioArchiveInputStream cpioIn = new CpioArchiveInputStream( new FileInputStream

我正在寻找一种在java运行时读取RPM内容的方法

有人建议使用7zip在运行时使用系统命令7zip解包和/或提取RPM

该解决方案有两个缺点:

  • 它依赖于平台(因为命令将特定于一个操作系统)
  • 它涉及第三方软件
  • 有什么想法吗

    编辑:
    我想沿着罗伯特的路走。这是我的密码:

    String file = "MyRpm.rpm";
    
    CpioArchiveInputStream cpioIn = 
           new CpioArchiveInputStream( new FileInputStream(new File(file)) );
     CpioArchiveEntry cpioEntry;
    
    
    
    while ((cpioEntry = cpioIn.getNextEntry()) != null)
    {
        System.out.println(cpioEntry.getName());
        int tmp;
        StringBuffer buf = new StringBuffer();
        while ((tmp = cpioIn.read()) != -1)
        {
            buf.append((char) tmp);
        }
        System.out.println(buf.toString());
    }
    cpioIn.close();
    

    我得到一个异常:
    java.io.IOException:Unknown magic[??
    (有趣的字符来自原始错误消息).

    似乎
    commons compress
    有一个在读取RPM文件中的数据时可能有用的方法。

    使用库来解压缩LZMA:

    什么是RMP?你是说RPM吗?不确定为什么会发生这种情况,也许你可以在库的邮件列表中询问打开bug报告。我没有使用它,只是用谷歌的earch。