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