Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 DylanJ
DylanJ

Comprimarea / Decomprimarea dosarelor și fișierelor

Stie cineva despre o modalitate buna de a comprima sau decomprima fisierele si folderele din C # repede? Este posibil să fie necesară manipularea unor fișiere mari.

50 2008-08-01T17:13:08+00:00 8
Programare
file
compression
.net
c#
Comentarii la întrebare (0)
alumb
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#149

As of .Net 1.1 the only available method is reaching into the java libraries.
Using the Zip Classes in the J# Class Libraries to Compress Files and Data with C#
Not sure if this has changed in recent versions.

0
0
Comentarii (0)
Tom Grochowicz
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#151

Întotdeauna am folosit Biblioteca SharpZip.

Iată un link

0
0
Comentarii (0)
Utilizator anonim
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#165

Puteți folosi o bibliotecă terță parte, cum ar fi SharpZip așa cum a subliniat Tom.

Un alt mod (fără a merge 3rd party) este utilizarea API-ului Windows Shell. Va trebui să setați o referință la biblioteca COM Shell Controls și Automation COM în proiectul dvs. C #. Gerald Gibson are un exemplu la:

http://geraldgibson.net/dnn/Home/CZipFileCompression/tabid/148/Default.aspx

Arhiva Internetului copie a paginii moarte

0
0
Comentarii (0)
shsteimer
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#1716

Acest lucru este foarte ușor de făcut în java, și așa cum sa menționat mai sus, puteți ajunge în bibliotecile java.util.zip din C #. Pentru referințe, consultați:

java.util.zip javadocs
sample code

Am folosit acest lucru cu ceva timp în urmă pentru a face un zip profund (recursiv) al unei structuri de directoare, dar nu cred că am folosit vreodată unzipping-ul. Dacă sunt atât de motivați, pot să scot codul și să îl editez mai târziu.

0
0
Comentarii (0)
Dave Anderson
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#2142

Nomenclatorul de spațiu .Net 2.0 System.IO.Compression acceptă algoritmi GZip și Deflate. Iată două metode care comprimă și decomprimă un flux de octeți pe care îl puteți obține de la obiectul fișierului. Puteți substitui GZipStream pentru DefaultStream în metodele de mai jos pentru a utiliza respectivul algoritm. Acest lucru lasă totuși problema manipulării fișierelor comprimate cu algoritmi diferiți.

public static byte[] Compress(byte[] data)
{
    MemoryStream output = new MemoryStream();

    GZipStream gzip = new GZipStream(output, CompressionMode.Compress, true);
    gzip.Write(data, 0, data.Length);
    gzip.Close();

    return output.ToArray();
}

public static byte[] Decompress(byte[] data)
{
    MemoryStream input = new MemoryStream();
    input.Write(data, 0, data.Length);
    input.Position = 0;

    GZipStream gzip = new GZipStream(input, CompressionMode.Decompress, true);

    MemoryStream output = new MemoryStream();

    byte[] buff = new byte[64];
    int read = -1;

    read = gzip.Read(buff, 0, buff.Length);

    while (read > 0)
    {
        output.Write(buff, 0, read);
        read = gzip.Read(buff, 0, buff.Length);
    }

    gzip.Close();

    return output.ToArray();
}
0
0
Comentarii (0)
Rok
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#8438622

O altă alternativă bună este și DotNetZip .

0
0
Comentarii (0)
Darryl
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#10568788

GZipStream is a really good utility to use.

0
0
Comentarii (0)
Amit Joki
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#20032943

Răspunsul meu ar fi închis ochii și optați pentru DotNetZip . A fost testat de o comunitate mare.

0
0
Comentarii (0)
mohsen_1687
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#48174631

puteți crea fișier zip cu această metodă:

public async Task CreateZipFile(string sourceDirectoryPath, string name)
    {
        var path = HostingEnvironment.MapPath(TempPath) + name;
        await Task.Run(() =>
        {
            if (File.Exists(path)) File.Delete(path);
            ZipFile.CreateFromDirectory(sourceDirectoryPath, path);
        });
        return path;
    }

and then you can unzip zip file with this methods:
1- this method work with zip file path

public async Task ExtractZipFile(string filePath, string destinationDirectoryName)
    {
        await Task.Run(() =>
        {
            var archive = ZipFile.Open(filePath, ZipArchiveMode.Read);
            foreach (var entry in archive.Entries)
            {
                entry.ExtractToFile(Path.Combine(destinationDirectoryName, entry.FullName), true);
            }
            archive.Dispose();
        });
    }

2 - această metodă funcționează cu flux de fișiere zip

public async Task ExtractZipFile(Stream zipFile, string destinationDirectoryName)
    {
        string filePath = HostingEnvironment.MapPath(TempPath) + Utility.GetRandomNumber(1, int.MaxValue);
        using (FileStream output = new FileStream(filePath, FileMode.Create))
        {
            await zipFile.CopyToAsync(output);
        }
        await Task.Run(() => ZipFile.ExtractToDirectory(filePath, destinationDirectoryName));
        await Task.Run(() => File.Delete(filePath));
    }
0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
https://stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire