بسم الله الرحمن الرحيم
هكذا يتم ضغط الملفات في الـ #C وهذه الخوارزمية هي نفسها المتبعة في نظام التشغيل وهي فعالة عند ضغط ملفات نصية ذات حروف متكررة
public void GZipCompress(string filename)
{
FileStream infile = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] buffer = new byte[infile.Length];
int count = infile.Read(buffer, 0, buffer.Length);
if (count != buffer.Length)
{
infile.Close();
Console.WriteLine("Test Failed: Unable to read data from file");
return;
}
infile.Close();
string CompressedFileName = Path.ChangeExtension(filename, ".ZIP");
FileStream Out = File.Create(CompressedFileName);
GZipStream CompressedzipStream = new GZipStream(Out, CompressionMode.Compress, true);
CompressedzipStream.Write(buffer, 0, buffer.Length);
CompressedzipStream.Close();
Out.Close();
}عملية فك ضغط الملفات
public void GZipDecompress(string filename)
{
FileStream infile = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
string DecompressedFileName = Path.ChangeExtension(filename, ".UNZIP");
FileStream Out = File.Create(DecompressedFileName);
GZipStream CompressedzipStream = new GZipStream(infile, CompressionMode.Decompress, true);
int offset = 0;
byte[] buffer = new byte[100];
while (true)
{
int bytesRead = CompressedzipStream.Read(buffer, 0, 100);
if (bytesRead == 0)
{
break;
}
Out.Write(buffer, offset, bytesRead);
}
infile.Close();
CompressedzipStream.Close();
Out.Close();
}لا تنسى أنه مثال على عملية ضغط وفك طغط الملفات أي لعمل برنامج عملي بحاجة لمزيد من العمل فهذه البداية ومنكم النهاية
أتمنى لكم التوفيق