كيف يمكنك تنزيل واستخراج ملف gzipped باستخدام C#؟
سؤال
أحتاج إلى تنزيل محتويات الملف واستخراجها وحفظها بشكل دوري http://data.dot.state.mn.us/dds/det_sample.xml.gz إلى القرص.هل لدى أي شخص خبرة في تنزيل الملفات المضغوطة باستخدام C#؟
المحلول
للضغط:
using (FileStream fStream = new FileStream(@"C:\test.docx.gzip",
FileMode.Create, FileAccess.Write)) {
using (GZipStream zipStream = new GZipStream(fStream,
CompressionMode.Compress)) {
byte[] inputfile = File.ReadAllBytes(@"c:\test.docx");
zipStream.Write(inputfile, 0, inputfile.Length);
}
}
لفك الضغط:
using (FileStream fInStream = new FileStream(@"c:\test.docx.gz",
FileMode.Open, FileAccess.Read)) {
using (GZipStream zipStream = new GZipStream(fInStream, CompressionMode.Decompress)) {
using (FileStream fOutStream = new FileStream(@"c:\test1.docx",
FileMode.Create, FileAccess.Write)) {
byte[] tempBytes = new byte[4096];
int i;
while ((i = zipStream.Read(tempBytes, 0, tempBytes.Length)) != 0) {
fOutStream.Write(tempBytes, 0, i);
}
}
}
}
مأخوذ من منشور كتبته العام الماضي يوضح كيفية فك ضغط ملف gzip باستخدام C# وفئة GZipStream المضمنة.http://blogs.msdn.com/miah/archive/2007/09/05/zipping-files.aspx
أما بالنسبة لتنزيله، يمكنك استخدام المعيار طلب الويب أو العميل على شبكة الإنترنت دروس في .NET.
نصائح أخرى
يمكنك استخدام WebClient في System.Net لتنزيل:
WebClient Client = new WebClient ();
Client.DownloadFile("http://data.dot.state.mn.us/dds/det_sample.xml.gz", " C:\mygzipfile.gz");
ثم استخدام #ziplib لإستخراج
يحرر:أو جي زيب ستريم...نسيت هذا واحد
جرب ال SharpZipLib, ، مكتبة تعتمد على لغة C# لضغط الملفات وفك ضغطها باستخدام gzip/zip.
يمكن العثور على استخدام العينة على هذا مشاركة مدونة:
using ICSharpCode.SharpZipLib.Zip;
FastZip fz = new FastZip();
fz.ExtractZip(zipFile, targetDirectory,"");
مجرد استخدام http.WebRequest فئة في مساحة الاسم System.Net لطلب الملف وتنزيله.ثم استخدام GZipStream فئة في مساحة الاسم System.IO.Compression لاستخراج المحتويات إلى الموقع الذي تحدده.يقدمون أمثلة.
ال GZipStream قد يكون الفصل هو ما تريد.