Добавление файлов в архив Tar без копирования структуры родительского файла - PullRequest
0 голосов
/ 08 июня 2018

Я создаю игру, в которой пользователь может создавать собственный контент.С каждым пользовательским созданием связаны два файла: файл .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").Можно ли удалить это, чтобы избежать необходимости копать, когда я извлекаю эти файлы позже?

1 Ответ

0 голосов
/ 08 июня 2018

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

...