c# - mac - zip datei komprimieren online




Ordner und Dateien komprimieren/dekomprimieren (6)

Ab .NET 1.1 ist die einzige verfügbare Methode, in die Java-Bibliotheken zu gelangen.
Verwenden der Zip-Klassen in den J # -Klassenbibliotheken zum Komprimieren von Dateien und Daten mit C #
Ich bin mir nicht sicher, ob sich dies in den letzten Versionen geändert hat.

Kennt jemand eine gute Möglichkeit, Dateien und Ordner in C # schnell zu komprimieren oder zu dekomprimieren? Der Umgang mit großen Dateien kann erforderlich sein.


Der .Net 2.0-Framework-Namespace System.IO.Compression unterstützt GZip- und Deflate-Algorithmen. Hier sind zwei Methoden zum Komprimieren und Dekomprimieren eines Byte-Streams, den Sie von Ihrem Dateiobjekt erhalten können. Sie können GZipStream für DefaultStream in den folgenden Methoden DefaultStream , um diesen Algorithmus zu verwenden. Das Problem der Behandlung von Dateien, die mit unterschiedlichen Algorithmen komprimiert wurden, bleibt jedoch bestehen.

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();
}



Mit dieser Methode können Sie eine ZIP-Datei erstellen:

public async Task<string> 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;
    }

und dann können Sie die zip-Datei mit diesen Methoden entpacken:
1- Diese Methode arbeitet mit dem Zip-Dateipfad

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- Diese Methode arbeitet mit dem ZIP-Dateistream

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));
    }







compression