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.
- Zuerst erstellen Sie einen
Zusammenfassung der Schritte
- Laden Sie die Datei mit
WebClient
herunter. - Öffnen Sie die gzipped Datei mit einem
FileStream
. - Wickeln Sie sie in einen
GZipStream
zur Dekompression. - 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.