IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
aurus
Člen
Avatar
aurus:19.8.2013 21:17

Ahoj,

chtěl bych se zeptat, zdali nemáte někdo zkušenost s knihovnou SharpZipLib a to přímo s kompresí do tar.gz.

Potřebuji, aby při kompresi v balíku nezůstala zdrojová složka, tzn. když zadám např. cestu C:\\data , tak aby se v balíku nevytvořila složka data.

Děkuji za odpověď

aurus

using System.IO;
using ICSharpCode.SharpZipLib.Tar;
using ICSharpCode.SharpZipLib.GZip;
using System;

class MakeTar
{

    public void CreateTar(string outputTarFilename, string sourceDirectory)
    {
        using (FileStream fs = new FileStream(outputTarFilename, FileMode.Create, FileAccess.Write, FileShare.None))
        using (Stream gzipStream = new GZipOutputStream(fs))
        using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(gzipStream))
        {
            AddDirectoryFilesToTar(tarArchive, sourceDirectory, true);
        }
    }


    private void AddDirectoryFilesToTar(TarArchive tarArchive, string sourceDirectory, bool recurse)
    {
        // Recursively add sub-folders
        if (recurse)
        {
            string[] directories = Directory.GetDirectories(sourceDirectory);
            foreach (string directory in directories)
                AddDirectoryFilesToTar(tarArchive, directory, recurse);
        }

        // Add files
        string[] filenames = Directory.GetFiles(sourceDirectory);


        foreach (string filename in filenames)
        {

            TarEntry tarEntry = TarEntry.CreateEntryFromFile(filename);
            tarArchive.WriteEntry(tarEntry, true);
        }
    }
}
 
Odpovědět
19.8.2013 21:17
Avatar
Odpovídá na aurus
Michal Žůrek - misaz:19.8.2013 21:20

tak tam nedávej složku, ale jen soubory ze složky.

 
Nahoru Odpovědět
19.8.2013 21:20
Avatar
aurus
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
aurus:19.8.2013 21:21

právěže tam potřebuju všechny podsložky kromě té výchozí

 
Nahoru Odpovědět
19.8.2013 21:21
Avatar
Odpovídá na aurus
Michal Žůrek - misaz:19.8.2013 21:25

problém je v tom že ty máš složku

- korenovaSlozka
   - podslozka
       -foto1.jpg
       -foto2.jpg
   -foto3.jpg
   -foto4.jpg

a ty tam přidáváš korenovaSlozka, ty musíš projít korenovaSlozka a vožit tam všechny její soubory a podsložky.

 
Nahoru Odpovědět
19.8.2013 21:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na aurus
Kit:19.8.2013 21:47

Naopak u tar.gz je velmi žádoucí, aby v něm ten adresář byl. Docela mě štve, když před rozbalením musím koukat, zda tam ten adresář je a pokud není, musím ho ručně vytvářet.

Nahoru Odpovědět
19.8.2013 21:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michal Žůrek - misaz:19.8.2013 21:51

to je obecně u archívů

 
Nahoru Odpovědět
19.8.2013 21:51
Avatar
aurus
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
aurus:19.8.2013 21:52

vím, jak to myslíš, jen tam potřebuji jako argument zadat cestu ke složce, jak tedy potom udělat, aby se tam nepřidala?

 
Nahoru Odpovědět
19.8.2013 21:52
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:19.8.2013 21:54

Však také TAR je zkratkou "Tape ARchiver".

Nahoru Odpovědět
19.8.2013 21:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.