كيف يمكنك تنزيل واستخراج ملف gzipped باستخدام C#؟

StackOverflow https://stackoverflow.com/questions/16833

  •  08-06-2019
  •  | 
  •  

سؤال

أحتاج إلى تنزيل محتويات الملف واستخراجها وحفظها بشكل دوري 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 قد يكون الفصل هو ما تريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top