Date Image Thursday, September 3, 2009 | Kategoriler | C#, Tümü

.Net Framework Nimetlerinden Zip Ve UnZip

Bir arkadaşımın isteği üzerine basit bir WinZip uygulaması yaptım. Yazdığım bu uygulama Windows uygulaması ve ben yazdığım makalelerde bu tip örnekler için Console uygulamalarını tercih ediyorum salt kod yazmak daha zevklidir diye düşünerek. Bu nedenle uygulamanın sadece sıkıştırma ve çıkartma işlemlerini alarak uygun bir console uygulaması yazdım.

Ziplemek için .Net Framework’le gelen bir assembly i kullandım, bunun için dışarıda bir dll aramaya çalışmadım gerek duymadım da açıkçası. .Net Framework’ün “Microsoft.VisualStudio.Zip” dll i işimi gördü. Bu dll’i referanslarda göremediğimiz için GAC içerisine bir göz atmak gerekiyor. GAC nedir diye soranlara Global Assembly Cache diyorum şimdilik. GAC ile ilgili kısa bir şeyler de yazacağım daha sonra.

Şimdi işe bu dll i bulmakla başlayalım. GAC klasörü işletim sisteminin Windows\assembly\ ‘dür.Shared assemblyler buradan paylaşılır.Ancak bu klasörün içeriğini normalde göremezsiniz bunu da GAC makalesinde anlatırım o nedenle window RUN ile “C:\windows\assembly\gac_msil\Microsoft.VisualStudio.Zip\” i çalıştırarak açılan klasörde bulanan diğer klasörün içerisinde bulunan Microsoft.VisualStudio.Zip.dll i projenize referans vererek kullanabilirsiniz.

Artık örneğe geçebiliriz ;

static void Main(string[] args)

        {

            #region Zip

            Console.Write("Ziplenmesini istediğiniz klasörün yolunu giriniz :");

            string fileToZip = Console.ReadLine();

            Console.Write("Oluşacak zip dosyasının adını tam yol ile belirtin :");

            string zipName = Console.ReadLine();

 

            List<string> fileNames = new List<string>();

            foreach (string f in Directory.GetFiles(fileToZip))

            {

                fileNames.Add(Path.GetFileName(f));

            }

 

 

            try

            {

                ZipFileCompressor sCompressor = new ZipFileCompressor(zipName, fileToZip, fileNames.ToArray());

                Process.Start(zipName);

            }

            catch

            {

                Console.WriteLine("Zip oluşturulamadı!");

            }

            #endregion

            //#############################################

            #region UnZip

            Console.Write("Açılmasını istediğiniz zip dosyasının tam yolunu giriniz :");

            string zipFile = Console.ReadLine();

            Console.Write("Zip içindeki dosyaların açılacağı dosya yolunu giriniz :");

            string decompFile = Console.ReadLine();

            ZipFileDecompressor sDecompressor = new ZipFileDecompressor(zipFile);

            try

            {

                sDecompressor.UncompressToFolder(decompFile);

                Process.Start(decompFile);

            }

            catch

            {

                Console.WriteLine("Zip açılamadı!");

            }

            #endregion

        }

 

Etiketler :