Would you like to react to this message? Create an account in a few clicks or log in to continue.

    Compression

    avatar
    Admin
    Admin


    Posts : 77
    Join date : 2009-07-28

    Compression Empty Compression

    Post  Admin Fri Jan 01, 2010 9:50 am

    using System.IO.Compression;
    public bool compresserFichier(string cheminSource, string cheminDestination)
    // cheminSource : chemin complet du fichier à compresser
    // cheminDestination : chemin complet du fichier compressé à créer
    {
    try
    {
    // Le fichier est placé dans le FileStream
    FileStream monFileStream = new FileStream(cheminSource, FileMode.Open);

    byte[] monBuffer = new byte[monFileStream.Length];
    // Lecture de l'intégralité du FileStream
    monFileStream.Read(monBuffer, 0, System.Convert.ToInt32(monFileStream.Length));
    // Fermeture du FileStream
    monFileStream.Close();
    // Création du fichier qui va contenir le fichier compressé
    monFileStream = new FileStream(cheminDestination, FileMode.Create);

    // Compression des données
    GZipStream monGZipStream = new GZipStream(monFileStream, CompressionMode.Compress, false);
    // Ecriture des données compressées dans le fichier de destination
    monGZipStream.Write(monBuffer, 0, monBuffer.Length);
    // Fermeture du GZipStream
    monGZipStream.Close();
    return true;
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    return false;
    }

    }
    avatar
    Admin
    Admin


    Posts : 77
    Join date : 2009-07-28

    Compression Empty Re: Compression

    Post  Admin Fri Jan 01, 2010 11:40 am

    GZIP A FOLDER
    DirectoryInfo dir = new DirectoryInfo(@"c:\My SCA Projects");

    FileInfo[] flist = dir.GetFiles();

    foreach (FileInfo f in flist)

    {

    byte[] bufferWrite;

    FileStream fsSource;

    FileStream fsDest;

    GZipStream gzCompressed;

    fsSource = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read);

    bufferWrite = new byte[fsSource.Length];

    fsSource.Read(bufferWrite, 0, bufferWrite.Length);

    fsDest = new FileStream("utku.zip", FileMode.OpenOrCreate, FileAccess.Write);

    gzCompressed = new GZipStream(fsDest, CompressionMode.Compress, true);

    gzCompressed.Write(bufferWrite, 0, bufferWrite.Length);

    fsSource.Close();

    gzCompressed.Close();

    fsDest.Close();

    }[code]
    avatar
    Admin
    Admin


    Posts : 77
    Join date : 2009-07-28

    Compression Empty Re: Compression

    Post  Admin Fri Jan 01, 2010 12:13 pm

    FOLDER SUBFOLDER
    public static void ZipFiles(string inputFolderPath, string outputPathAndFile, string password)
    {
    ArrayList ar = GenerateFileList(inputFolderPath); // generate file list
    int TrimLength = (Directory.GetParent(inputFolderPath)).ToString().Length;
    // find number of chars to remove // from orginal file path
    TrimLength += 1; //remove '\'
    FileStream ostream;
    byte[] obuffer;
    string outPath = inputFolderPath + @"\" + outputPathAndFile;
    ZipOutputStream oZipStream = new ZipOutputStream(File.Create(outPath)); // create zip stream
    if (password != null && password != String.Empty)
    oZipStream.Password = password;
    oZipStream.SetLevel(9); // maximum compression
    ZipEntry oZipEntry;
    foreach (string Fil in ar) // for each file, generate a zipentry
    {
    oZipEntry = new ZipEntry(Fil.Remove(0, TrimLength));
    oZipStream.PutNextEntry(oZipEntry);

    if (!Fil.EndsWith(@"/")) // if a file ends with '/' its a directory
    {
    ostream = File.OpenRead(Fil);
    obuffer = new byte[ostream.Length];
    ostream.Read(obuffer, 0, obuffer.Length);
    oZipStream.Write(obuffer, 0, obuffer.Length);
    }
    }
    oZipStream.Finish();
    oZipStream.Close();
    }


    private static ArrayList GenerateFileList(string Dir)
    {
    ArrayList fils = new ArrayList();
    bool Empty = true;
    foreach (string file in Directory.GetFiles(Dir)) // add each file in directory
    {
    fils.Add(file);
    Empty = false;
    }

    if (Empty)
    {
    if (Directory.GetDirectories(Dir).Length == 0)
    // if directory is completely empty, add it
    {
    fils.Add(Dir + @"/");
    }
    }

    foreach (string dirs in Directory.GetDirectories(Dir)) // recursive
    {
    foreach (object obj in GenerateFileList(dirs))
    {
    fils.Add(obj);
    }
    }
    return fils; // return file list
    }


    public static void UnZipFiles(string zipPathAndFile, string outputFolder, string password, bool deleteZipFile)
    {
    ZipInputStream s = new ZipInputStream(File.OpenRead(zipPathAndFile));
    if (password != null && password != String.Empty)
    s.Password = password;
    ZipEntry theEntry;
    string tmpEntry = String.Empty;
    while ((theEntry = s.GetNextEntry()) != null)
    {
    string directoryName = outputFolder;
    string fileName = Path.GetFileName(theEntry.Name);
    // create directory
    if (directoryName != "")
    {
    Directory.CreateDirectory(directoryName);
    }
    if (fileName != String.Empty)
    {
    if (theEntry.Name.IndexOf(".ini") < 0)
    {
    string fullPath = directoryName + "\\" + theEntry.Name;
    fullPath = fullPath.Replace("\\ ", "\\");
    string fullDirPath = Path.GetDirectoryName(fullPath);
    if (!Directory.Exists(fullDirPath)) Directory.CreateDirectory(fullDirPath);
    FileStream streamWriter = File.Create(fullPath);
    int size = 2048;
    byte[] data = new byte[2048];
    while (true)
    {
    size = s.Read(data, 0, data.Length);
    if (size > 0)
    {
    streamWriter.Write(data, 0, size);
    }
    else
    {
    break;
    }
    }
    streamWriter.Close();
    }
    }
    }
    s.Close();
    if (deleteZipFile)
    File.Delete(zipPathAndFile);
    }
    }
    }
    avatar
    Admin
    Admin


    Posts : 77
    Join date : 2009-07-28

    Compression Empty Re: Compression

    Post  Admin Fri Jan 01, 2010 12:16 pm


    Sponsored content


    Compression Empty Re: Compression

    Post  Sponsored content


      Current date/time is Mon May 20, 2024 8:23 am