1. Project2501

    Mensajes [7] - Enviado el Martes 03 de Julio de 2007 a las 09:24hs

    Hola estoy haciendo un compresor de ficheros utilizando la librer?a IShapCode.SharpZipLib.dll para comprimirlos con winzip.

    Cuando le paso una carpeta me lo hace bien pero cuando le paso varias carpetas de un directorio entero, o me guarda todos los ficheros sin guardarme la estructura de carpetas, o s?lo me guarda la primera carpeta. No s? qu? hago mal, por favor alguien podr?a ayudarme??? Os dejo dos procedimientos que he hecho.

    //con esta opcion solo me comprime una carpeta

    public void comprimirDirectorio(string directorio)

    {

    ZipOutputStream zipFile = null;



    try

    {

    foreach (string dir in Directory.GetDirectories(directorio))

    {

    //aqu? hay que asignarle el nombre que queremos que tenga el fichero comprimido

    if (!File.Exists(@"C:SDSModulos EnviadosModificacionesRecientes.zip"))

    {

    zipFile = new ZipOutputStream(File.Create(@"C:SDSModulos EnviadosModificacionesRecientes.zip"));

    zipFile.SetLevel(9); //max compression

    }



    List files = new List(Directory.GetFiles(dir));



    foreach (string file in files)

    {

    byte[] buffer = new byte[4096];



    List dirSplit = new List(dir.Split(@"".ToCharArray()));

    List fileSplit = new List(file.Split(@"".ToCharArray()));



    ZipEntry entry = new ZipEntry(dirSplit[dirSplit.Count - 1] + @"" + fileSplit[fileSplit.Count - 1]);

    entry.DateTime = DateTime.Now;

    zipFile.PutNextEntry(entry);



    FileStream fs = null;

    try

    {

    fs = File.OpenRead(file);

    int bytes = 1;



    while (bytes > 0)

    {

    bytes = fs.Read(buffer, 0, buffer.Length);

    zipFile.Write(buffer, 0, bytes);

    }

    }

    catch

    {

    }

    finally

    {

    if (fs != null)

    {

    fs.Close();

    }

    }

    }

    }

    }

    catch

    {

    }

    finally

    {

    if (zipFile != null)

    {

    zipFile.Finish();

    zipFile.Close();

    }

    }

    }



    //*****************************************************************
    //con esta opci?n me comprime todos los archivos del directorio pero pierde toda la estructura de las carpetas
    public void CompressDirectory(string directorio, ZipOutputStream zip)

    {

    zip.SetLevel(9);

    foreach (string file in Directory.GetFiles(directorio))

    WriteToZip(file, file.Replace(directorio, null), zip);

    }



    //*******************************************************************



    static void WriteToZip(string file, string entrypath, ZipOutputStream zip)

    {

    ZipEntry entry = new ZipEntry(entrypath);

    entry.DateTime = DateTime.Now;

    zip.PutNextEntry(entry);

    if (!string.IsNullOrEmpty(file))

    {

    using (FileStream fs = File.OpenRead(file))

    {

    byte[] buffer = new byte[4096];

    int bytes = 1;

    while (bytes > 0)

    {

    bytes = fs.Read(buffer, 0, buffer.Length);

    zip.Write(buffer, 0, bytes);

    }

    }

    }

    }

    alguien puede ayudarme?????? muchas gracias a todos.


responder

Para poder responder a este tema tenes que ingresar. Si no tenes una cuenta podes registrarse gratis..

publicidad

API DE FACEBOOK
GOOGLE CALENDAR API
GOOGLE MAPS API