Добавление файлов в архив Tar без копирования структуры родительского файла

Я создаю игру, в которой пользователь может создавать собственный контент. С каждым созданием по индивидуальному заказу связано два файла: файл .ogg и файл .xml. Раньше у меня была папка, содержащая все связанные файлы, но вместо этого я хотел бы обернуть все связанные файлы в файл .tar.

Используя следующий код, я могу создать архив .tar (с настраиваемым расширением «.krs»):

        FileInfo[] filesInDirectory = folder.GetFiles();
        string tarArchiveName = @"C:\Users\me\Desktop\UserData\songs\songName.krs";

        using (Stream targetStream = new GZipOutputStream(File.Create(tarArchiveName)))
        using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(targetStream, TarBuffer.DefaultBlockFactor))
        {
            foreach (FileInfo file in filesInDirectory)
            {
                TarEntry entry = TarEntry.CreateEntryFromFile(file.FullName);
                tarArchive.WriteEntry(entry, false);
            }
        }

Это не дает никаких ошибок, но когда я открываю файл .krs как .tar с помощью 7zip, файлы закапываются под ВСЕМИ родительскими каталогами исходных файлов, которые были скопированы в архив. Например, путь к файлу data.xml в файле .tar: C: \ Users \ me \ Desktop \ UserData \ songs \ songName \ data.xml.

Я хочу открыть файл .tar, а в нем нет каталога верхнего уровня - только два файла. Например, файл data.xml в архиве .tar должен быть просто «data.xml».

Я знаю, что это достижимо, потому что я могу сделать это вручную с помощью 7zip. Как это сделать с помощью библиотеки SharpZipLib на C #? Я нашел этот ответ, который кажется чтобы решить мою проблему, но он написан на Python, языке, которого я не понимаю.

РЕДАКТИРОВАТЬ: Я провел еще несколько поисков и нашел этот ответ. Я попробовал решение, и оно удалило все, кроме первого родительского каталога файлов (".tar: parentFolder \ data.xml"). Можно ли удалить и это, чтобы не копаться при извлечении этих файлов позже?


person Tanner Fix-It Smith    schedule 07.06.2018    source источник
comment
Возможный дубликат Создайте архив .tar.gz без папки структура с помощью SharpZipLib   -  person Tanner Fix-It Smith    schedule 08.06.2018


Ответы (1)


При тестировании ответа я разместил в своем edit, я обнаружил, что при извлечении файлов они выходят сами по себе и не помещаются в папку. Это тот ответ, который я искал.

person Tanner Fix-It Smith    schedule 08.06.2018