So laden Sie gzipped Dateien herunter und extrahieren sie mit C#

In der heutigen datengetriebenen Welt könnte es notwendig sein, Dateien regelmäßig herunterzuladen und zu verarbeiten. Eine häufige Aufgabe besteht darin, gzipped Dateien herunterzuladen, was in C# kompliziert sein kann, wenn Sie die richtigen Methoden nicht kennen. Dieser Leitfaden führt Sie durch die Schritte, um eine gzipped Datei programmgesteuert mit C# herunterzuladen und zu extrahieren.

Das Problem: Gzipped Dateien herunterladen

Viele Websites hosten Daten in komprimierten Formaten wie gzip, um Bandbreite zu sparen. Zum Beispiel verweist die URL http://data.dot.state.mn.us/dds/det_sample.xml.gz auf eine gzipped XML-Datei. Wenn Sie diese Datei herunterladen, extrahieren und auf Ihrer Festplatte speichern möchten, müssen Sie wissen, wie Sie dies effektiv in C# tun.

Die Lösung: Schritt-für-Schritt-Anleitung

1. Laden Sie die gzipped Datei herunter

Um eine gzipped Datei herunterzuladen, können Sie entweder die Klassen WebRequest oder WebClient, die in .NET verfügbar sind, verwenden. Im Folgenden finden Sie ein Beispiel, das die Klasse WebClient aufgrund ihrer Einfachheit verwendet.

using System.Net;

string url = "http://data.dot.state.mn.us/dds/det_sample.xml.gz";
string savePath = @"C:\path\to\your\det_sample.xml.gz";

using (WebClient webClient = new WebClient())
{
    webClient.DownloadFile(url, savePath);
}
  • Erklärung:
    • WebClient wird verwendet, um Dateien aus dem Internet herunterzuladen.
    • Die Methode DownloadFile nimmt die URL der gzipped Datei und den lokalen Pfad, wo Sie sie speichern möchten.

2. Extrahieren des gzipped Inhalts

Nachdem Sie die gzipped Datei heruntergeladen haben, besteht der nächste Schritt darin, ihren Inhalt zu extrahieren. Dazu verwenden wir die Klasse GZipStream.

Beispiel für den Dekomprimierungscode

using System.IO;
using System.IO.Compression;

string gzippedFilePath = @"C:\path\to\your\det_sample.xml.gz";
string outputFilePath = @"C:\path\to\your\det_sample.xml";

using (FileStream fInStream = new FileStream(gzippedFilePath, FileMode.Open, FileAccess.Read))
{
    using (GZipStream zipStream = new GZipStream(fInStream, CompressionMode.Decompress))
    {
        using (FileStream fOutStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write))
        {
            byte[] tempBytes = new byte[4096];
            int bytesRead;
            while ((bytesRead = zipStream.Read(tempBytes, 0, tempBytes.Length)) != 0)
            {
                fOutStream.Write(tempBytes, 0, bytesRead);
            }
        }
    }
}
  • Erklärung:
    • Zuerst erstellen Sie einen FileStream, um die gzipped Datei zu lesen.
    • Dann wickeln Sie diesen Stream in einen GZipStream, um die Dekompression zu verwalten.
    • Schließlich erstellen Sie einen weiteren FileStream, um den dekomprimierten Inhalt in eine neue Datei zu schreiben.

Zusammenfassung der Schritte

  1. Laden Sie die Datei mit WebClient herunter.
  2. Öffnen Sie die gzipped Datei mit einem FileStream.
  3. Wickeln Sie sie in einen GZipStream zur Dekompression.
  4. Schreiben Sie die Ausgabe in eine neue Datei mit einem weiteren FileStream.

Indem Sie diese Schritte befolgen, können Sie den Prozess des Herunterladens und Extrahierens von gzipped Dateien mit C# einfach automatisieren.

Fazit

Der Umgang mit gzipped Dateien in C# ist unkompliziert, sobald Sie die erforderlichen Klassen und Methoden verstehen. Mit nur wenigen Codezeilen können Sie effizient jeden gzipped Inhalt herunterladen und extrahieren, den Sie benötigen.

Für weitere Informationen zu Kompression und Dateiverwaltung in C# sollten Sie die offizielle Dokumentation von Microsoft konsultieren.