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

في عالم اليوم المدفوع بالبيانات، قد تجد نفسك بحاجة إلى تنزيل ومعالجة الملفات بشكل منتظم. مهمة شائعة تشمل تنزيل ملفات gzipped، ولكن القيام بذلك باستخدام C# يمكن أن يكون معقدًا إذا لم تكن على دراية بالطرق الصحيحة. سيقوم هذا الدليل بإرشادك خلال الخطوات اللازمة لتنزيل واستخراج ملف gzipped برمجيًا باستخدام C#.

المشكلة: تنزيل ملفات Gzipped

تستضيف العديد من المواقع بيانات بتنسيقات مضغوطة مثل gzip لتوفير النطاق الترددي. على سبيل المثال، يشير الرابط http://data.dot.state.mn.us/dds/det_sample.xml.gz إلى ملف XML مضغوط. إذا كنت بحاجة إلى تنزيل هذا الملف واستخراجه وحفظه على القرص، فسوف تحتاج إلى معرفة كيفية القيام بذلك بفاعلية باستخدام C#.

الحل: دليل خطوة بخطوة

1. تنزيل الملف المضغوط

لتنزيل ملف gzipped، يمكنك استخدام إما WebRequest أو WebClient المتاحة في .NET. أدناه مثال يوضح كيفية استخدام فئة WebClient نظرًا لبساطتها.

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);
}
  • التفسير:
    • يتم استخدام WebClient لتنزيل الملفات من الويب.
    • تأخذ طريقة DownloadFile رابط URL للملف المضغوط والمسار المحلي الذي تريد حفظه فيه.

2. استخراج المحتويات المضغوطة

بعد تنزيل الملف المضغوط، الخطوة التالية هي استخراج محتوياته. لهذا، سنستخدم فئة GZipStream.

مثال على كود فك الضغط

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);
            }
        }
    }
}
  • التفسير:
    • أولاً، أنشئ FileStream لقراءة ملف gzipped.
    • ثم، قم بتغليف هذا التدفق في GZipStream للتعامل مع فك الضغط.
    • أخيرًا، أنشئ FileStream آخر لكتابة المحتوى الذي تم فك ضغطه إلى ملف جديد.

ملخص الخطوات

  1. قم بتنزيل الملف باستخدام WebClient.
  2. افتح الملف المضغوط باستخدام FileStream.
  3. قم بتغليفه في GZipStream لفك الضغط.
  4. اكتب الناتج إلى ملف جديد باستخدام FileStream آخر.

من خلال اتباع هذه الخطوات، يمكنك بسهولة أتمتة عملية تنزيل واستخراج ملفات gzipped باستخدام C#.

الخاتمة

التعامل مع ملفات gzipped في C# هو أمر بسيط بمجرد فهم الفئات والطرق اللازمة. مع بضع أسطر فقط من الكود، يمكنك بكفاءة تنزيل واستخراج أي محتوى مضغوط تحتاجه.

للمزيد من القراءة حول الضغط وإدارة الملفات في C#، يمكنك الرجوع إلى الوثائق الرسمية من مايكروسوفت.