Как читать содержимое RPM в Java - PullRequest
5 голосов
/ 22 ноября 2011

Я ищу способ прочитать содержимое RPM во время выполнения Java.

Кто-то предложил использовать 7zip для распаковки и / или извлечения RPM во время выполнения, используя системную команду для 7zip.

у этого решения есть два минуса:

  1. Это зависит от платформы (поскольку команды будут специфичны для одной ОС)
  2. Это было связано со сторонним программным обеспечением.

есть идеи?

РЕДАКТИРОВАТЬ:
Я пытаюсь идти по дороге Роберта. Вот мой код:

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 [???? (забавные символы взяты из исходного сообщения об ошибке).

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Кажется, что commons-compress имеет пакет cpio , который может оказаться полезным при чтении данных из RPM-файлов.

0 голосов
/ 22 ноября 2011

Используйте библиотеку для распаковки LZMA: http://www.7 -zip.org / sdk.html

...