Avatar
aurus
Člen
Avatar
aurus:

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):

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

Nahoru Odpovědět 19.8.2013 21:20
Nesnáším {}, proto se jim vyhýbám.
Avatar
aurus
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
aurus:

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):

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
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kit
Redaktor
Avatar
Odpovídá na aurus
Kit:

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  +1 19.8.2013 21:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Nahoru Odpovědět 19.8.2013 21:51
Nesnáším {}, proto se jim vyhýbám.
Avatar
aurus
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
aurus:

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
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Kit:

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.