Создайте архив.tar.gz без структуры папок, используя SharpZipLib
Я пытаюсь.tar.gz список файлов из папки, используя SharpZipLib. Проблема не в том, как передать пути к файлам - результат всегда содержит пути к файлам, а не только сами файлы. Что мне здесь не хватает?
string filesFolder = "c:\\testfolder\\test\\";
List<string> filesToZip = new List<string>() { filesFolder +"test1", filesFolder +"test2"};
using (FileStream fs = new FileStream(filesFolder +"myGz.tar.gz" , FileMode.Create, FileAccess.Write, FileShare.None))
using (Stream gzipStream = new GZipOutputStream(fs))
using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream))
{
foreach (string filename in filesToZip )
{
{
TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
tarArchive.WriteEntry(tarEntry, false);
}
}
}
я получаю файлы myGz.tar.gz. Когда я пытаюсь открыть его с помощью 7.zip - я получаю полную структуру папок в архиве - c:\testfolder\test\, а в ней - "test1", "test".
Как мне удалить пути к файлам?
Спасибо
1 ответ
У меня была такая же проблема, и я понял это только после того, как нашел этот вопрос.
Ключ должен установить Name
собственность tarEntry
перед добавлением в архив.
TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
tarEntry.Name = Path.GetFileName(filename);
tarArchive.WriteEntry(tarEntry, false);