Мне нужно добавить файл конфигурации в существующий файл tar. Я использую apache.commons.compress библиотека. Следующий фрагмент кода добавляет запись правильно, но перезаписывает существующие записи tar-файла.Добавить запись в файл tar без перезаписывания его существующего содержимого
public static void injectFileToTar() throws IOException, ArchiveException {
String agentSourceFilePath = "C:\\Work\\tar.gz\\";
String fileToBeAdded = "activeSensor.cfg";
String unzippedFileName = "sample.tar";
File f2 = new File(agentSourceFilePath+unzippedFileName); // Refers to the .tar file
File f3 = new File(agentSourceFilePath+fileToBeAdded); // The new entry to be added to the .tar file
// Injecting an entry in the tar
OutputStream tarOut = new FileOutputStream(f2);
TarArchiveOutputStream aos = (TarArchiveOutputStream) new ArchiveStreamFactory().createArchiveOutputStream("tar", tarOut);
TarArchiveEntry entry = new TarArchiveEntry(fileToBeAdded);
entry.setMode(0100000);
entry.setSize(f3.length());
aos.putArchiveEntry(entry);
FileInputStream fis = new FileInputStream(f3);
IOUtils.copy(fis, aos);
fis.close();
aos.closeArchiveEntry();
aos.finish();
aos.close();
tarOut.close();
}
При проверке деготь, только файл «activeSensor.cfg» найден и начальное содержание смолы обнаружено недостающее. Правильно ли установлен режим?
@biggusjimmusThanks –
Спасибо. Я сделал вышеупомянутое изменение. Содержимое tar сохраняется, но новая запись (activeSensor.cfg) не добавляется в tar. Я что-то испортил с помощью пути или аргумента, переданного конструктору TarArchiveEntry? –
Я использовал этот подход, прежде чем я пошел искать здесь. Кажется, что запись будет помещена за пределы tar-архива, поэтому я получаю сообщение об ошибке, но моего нового файла там не будет. – froggythefrog