วิธีดาวน์โหลดและแตกไฟล์ Gzipped ด้วย C#
ในโลกที่ขับเคลื่อนด้วยข้อมูลในปัจจุบัน คุณอาจพบว่าตัวเองต้องดาวน์โหลดและประมวลผลไฟล์เป็นประจำ หนึ่งในงานที่พบได้บ่อยคือการดาวน์โหลดไฟล์ gzipped แต่การทำเช่นนี้ใน C# อาจเป็นเรื่องท้าทายหากคุณไม่คุ้นเคยกับวิธีการที่ถูกต้อง คู่มือนี้จะนำคุณผ่านขั้นตอนการดาวน์โหลดและแตกไฟล์ gzipped โดยใช้ C# อย่างมีระเบียบ
ปัญหา: การดาวน์โหลดไฟล์ Gzipped
เว็บไซต์หลายแห่งโฮสต์ข้อมูลในรูปแบบบีบอัด เช่น gzip เพื่อลดการใช้แบนด์วิธ ตัวอย่างเช่น URL http://data.dot.state.mn.us/dds/det_sample.xml.gz ชี้ไปที่ไฟล์ XML ที่บีบอัดด้วย gzip หากคุณต้องการดาวน์โหลด แตกไฟล์ และบันทึกไฟล์นี้ลงในดิสก์ของคุณ คุณจะต้องรู้วิธีการทำอย่างมีประสิทธิภาพใน C#
วิธีแก้ไข: คู่มือทีละขั้นตอน
1. ดาวน์โหลดไฟล์ Gzipped
ในการดาวน์โหลดไฟล์ 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 ของไฟล์ gzipped และที่อยู่ในเครื่องที่คุณต้องการบันทึก
2. การแตกเนื้อหาของไฟล์ Gzipped
หลังจากที่คุณดาวน์โหลดไฟล์ gzipped แล้ว ขั้นตอนถัดไปคือการแตกเนื้อหาของมัน สำหรับสิ่งนี้เราจะใช้คลาส 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
อีกอันหนึ่งเพื่อเขียนเนื้อหาที่แตกไฟล์ลงในไฟล์ใหม่
- สร้าง
สรุปขั้นตอน
- ดาวน์โหลดไฟล์ โดยใช้
WebClient
- เปิดไฟล์ gzipped ด้วย
FileStream
- ห่อหุ้มด้วย
GZipStream
เพื่อแตกไฟล์ - เขียนผลลัพธ์ ลงในไฟล์ใหม่โดยใช้
FileStream
อื่น
โดยการทำตามขั้นตอนเหล่านี้ คุณสามารถทำให้กระบวนการดาวน์โหลดและแตกไฟล์ gzipped เป็นไปโดยอัตโนมัติด้วย C#
สรุป
การจัดการไฟล์ gzipped ใน C# เป็นเรื่องที่ตรงไปตรงมาหลังจากที่คุณเข้าใจคลาสและเมธอดที่จำเป็น ด้วยเพียงไม่กี่บรรทัดของโค้ด คุณสามารถดาวน์โหลดและแตกไฟล์ gzipped ที่คุณต้องการได้อย่างมีประสิทธิภาพ
สำหรับการอ่านเพิ่มเติมเกี่ยวกับการบีบอัดและการจัดการไฟล์ใน C# ขอแนะนำให้ตรวจสอบเอกสารอย่างเป็นทางการของ Microsoft.