ASP.NET ile ZIP unZIP İşlemleri

ASP.NET ile ZIP unZIP İşlemleri ASP.NET ile ZIP ve unZIP İşlemleri

İster web siteleri programlarken ister windows programlarında çoğu zaman bir ZIP dosyası oluşturmaya ihtiyaç duymuşsunuzdur. Ben geneld

ASP.NET ile ZIP ve unZIP İşlemleri

İster web siteleri programlarken ister windows programlarında çoğu zaman bir ZIP dosyası oluşturmaya ihtiyaç duymuşsunuzdur. Ben genelde ZIP dosyalarını web sitelerinde yedekleme işlemleri için veya kullanıcı birden çok dosyayı siteden download edecekse hepsini birleştirip bir dosya olarak verebilmek için kullanırım. Windows programlarında da yedekleme işlemleri için veya Export ve İmport işlemlerinde dışarıyda tek bir dosya vermek için kullanabiliriz. Genel olarak baktığımızda internette bizi veri trafiğinden kurtaran ve derli doplu downloadlar sağlayan bir araç gibi kullanılabilir ZIP dosyaları.

Esas mesele .NET kodumuz ile istediğimiz dosyaları ZIPleyip var olan ZIP dosyalarını da açabilmek. Bu noktada bir sürü alternatif var, isterseniz üçüncü parti componentler satın alabilirsiniz veya ücretsiz dağıtılan bazı DLL kütüphanelerini de kullanabilirsiniz. Ama aslında bizim .NET Framework dahilinde kullanabileceğimiz yapılar da mevcut.

Microsoft.VisualStudio.Zip.dll

"Böyle bir sınıftan haberim yoktu. Bu kadar kolay mıymış?" diyenler üzülmesinler :) Haberinizin olmaması çok normal çünkü bu sınıf yapısına Visual Studio içerisinde "Add Reference" dediğinizde gelen listede karşılaşmanız mümkün değil. Aslında bu sınıf sadece Visual Studio Content Installer ve Template Wizard ile kullanılmak üzere hazırlanmış. O nedenle herhangi bir şekilde bu sınıfla ilgili Microsoft"dan destek almanız da mümkün değil.

Yukarıda ismini yazmış olduğum DLL dosyasını kendiniz gidip GAC (Global Assembly Cache) içerisinden bularak almanız gerekecek. Bunun için Start menüsünden Run diyerek c:windowsassemblygac_msil yazabilir ve direk söz konusu klasöre ulaşabilirsiniz. Benim bilgisayarımda tam yolu şu şekilde oldu: C:windowsassemblygac_msilMicrosoft.VisualStudio.Zip8.0.0.0__b03f5f7f11d50a3aMicrosoft.VisualStudio.Zip.dll

DLL dosyasını projenize kopyaladıktan sonra "Add Reference" bölümünde de "Browse" diyerek DLL"i doğrudan projenize referans olarak ekleyebilirsiniz.

Imports Microsoft.VisualStudio.Zip

Yukarıdaki şekilde DLL içerisindeki hedefimizi import ettikten sonra aşağıdaki gibi basit bir kod ile ZIP dosyalarını diske açabiliyoruz.

        Dim Cozucu As New Microsoft.VisualStudio.Zip.ZipFileDecompressor("C:Benimdosyamurada.zip")

        Cozucu.UncompressToFolder("C:DosyalarıBurayaKoy")

Cozucu adını verdiğimiz bir değişkene ZipFileDecompressor sınıfının bir kopyasını hedef ZIP dosyamızın tam yolunu da vererek yarattıktan sonra UncompressToFolder metodu ile istediğimiz bir yere tüm dosyaları açabiliyoruz. Şimdi sıra geldi ZIP dosyaları yaratmaya;

        Dim Dosyalar() As String = System.IO.Directory.GetFiles("C:SıkıştıracağımDosyalarınHepsiurada")

        "Dosyaların tam yol listesinin bulunduğu dizide sadece dosya isimlerini bırakalım.

        For Sayac As Integer = 0 To Dosyalar.GetUpperBound(0)

            Dosyalar(Sayac) = System.IO.Path.GetFileName(Dosyalar(Sayac))

        Next

 

        Dim Sikistirici As New ZipFileCompressor("C:IPDosyamBuraya.zip", "C:SikistirilacakDosyalarınBulunduguyerBurası", Dosyalar, True, False)

Sıkıştırma işlemine başlamadan önce sıkıştıracağımız dosyaların bir listesini String tipinde bir diziye almamız gerekiyor. O nedenle ilk satırda System.IO.Directory.GetFiles sınıfını kullanarak Dosyalar adındaki dizimize listeyi alıyoruz. System.IO.Directory.GetFiles sınıfı dosyaların listesini geriye dosyaların tam yolu ile döndürüyor. Biz dosyaların yol bilgisinin ZIP dosyasına aktarılmasını istemediğimiz için dizideki her bir öğeyi for döngüsü ile gezerek dosya isimlerini System.IO.Path.GetFileName sınıfı ile ayıklıyoruz.

Sıra geldi sıkıştırma işlemini yapmaya. Sıkıştırma işlemi için Sikistirici adında bir ZipFileCompressor yaratıyoruz. Esasen bu değişken yaratma işlemini yaparken sıkıştırma işini de yapmış olacağız. ZipFileCompressor tanımlarken verdiğimiz parametrelerden ilki yaratılacak ZIP dosyasının adı ve tam yolu. İkinci parametre tüm sıkıştırılacak dosyaların bulunduğu klasörün tam yolu, üçüncü parametre ise dosyalarımızın adlarının bulunduğu dizinin ta kendisi. Son olarak verdiğimiz iki parametreden ilki hedef konumda başka bir ZIP dosyası varsa silinip silinmeyeceğini diğeri ise bir hata durumunda sıkıştırmanın iptal edilip edilmeyeceğini belirliyor.

Hepinize kolay gelsin.

e ZIP dosyalarını web sitelerinde yedekleme işlemleri için veya kullanıcı birden çok dosyayı siteden download edecekse hepsini birleştirip bir dosya olarak verebilmek için kullanırım. Windows programlarında da yedekleme işlemleri için veya Export ve İmport işlemlerinde dışarıyda tek bir dosya vermek için kullanabiliriz. Genel olarak baktığımızda internette bizi veri trafiğinden kurtaran ve derli doplu downloadlar sağlayan bir araç gibi kullanılabilir ZIP dosyaları.

Esas mesele .NET kodumuz ile istediğimiz dosyaları ZIPleyip var olan ZIP dosyalarını da açabilmek. Bu noktada bir sürü alternatif var, isterseniz üçüncü parti componentler satın alabilirsiniz veya ücretsiz dağıtılan bazı DLL kütüphanelerini de kullanabilirsiniz. Ama aslında bizim .NET Framework dahilinde kullanabileceğimiz yapılar da mevcut.

Microsoft.VisualStudio.Zip.dll

"Böyle bir sınıftan haberim yoktu. Bu kadar kolay mıymış?" diyenler üzülmesinler :) Haberinizin olmaması çok normal çünkü bu sınıf yapısına Visual Studio içerisinde "Add Reference" dediğinizde gelen listede karşılaşmanız mümkün değil. Aslında bu sınıf sadece Visual Studio Content Installer ve Template Wizard ile kullanılmak üzere hazırlanmış. O nedenle herhangi bir şekilde bu sınıfla ilgili Microsoft"dan destek almanız da mümkün değil.

Yukarıda ismini yazmış olduğum DLL dosyasını kendiniz gidip GAC (Global Assembly Cache) içerisinden bularak almanız gerekecek. Bunun için Start menüsünden Run diyerek c:windowsassemblygac_msil yazabilir ve direk söz konusu klasöre ulaşabilirsiniz. Benim bilgisayarımda tam yolu şu şekilde oldu: C:windowsassemblygac_msilMicrosoft.VisualStudio.Zip8.0.0.0__b03f5f7f11d50a3aMicrosoft.VisualStudio.Zip.dll

DLL dosyasını projenize kopyaladıktan sonra "Add Reference" bölümünde de "Browse" diyerek DLL"i doğrudan projenize referans olarak ekleyebilirsiniz.

Imports Microsoft.VisualStudio.Zip

Yukarıdaki şekilde DLL içerisindeki hedefimizi import ettikten sonra aşağıdaki gibi basit bir kod ile ZIP dosyalarını diske açabiliyoruz.

        Dim Cozucu As New Microsoft.VisualStudio.Zip.ZipFileDecompressor("C:Benimdosyamurada.zip")

        Cozucu.UncompressToFolder("C:DosyalarıBurayaKoy")

Cozucu adını verdiğimiz bir değişkene ZipFileDecompressor sınıfının bir kopyasını hedef ZIP dosyamızın tam yolunu da vererek yarattıktan sonra UncompressToFolder metodu ile istediğimiz bir yere tüm dosyaları açabiliyoruz. Şimdi sıra geldi ZIP dosyaları yaratmaya;

        Dim Dosyalar() As String = System.IO.Directory.GetFiles("C:SıkıştıracağımDosyalarınHepsiurada")

        "Dosyaların tam yol listesinin bulunduğu dizide sadece dosya isimlerini bırakalım.

        For Sayac As Integer = 0 To Dosyalar.GetUpperBound(0)

            Dosyalar(Sayac) = System.IO.Path.GetFileName(Dosyalar(Sayac))

        Next

 

        Dim Sikistirici As New ZipFileCompressor("C:IPDosyamBuraya.zip", "C:SikistirilacakDosyalarınBulunduguyerBurası", Dosyalar, True, False)

Sıkıştırma işlemine başlamadan önce sıkıştıracağımız dosyaların bir listesini String tipinde bir diziye almamız gerekiyor. O nedenle ilk satırda System.IO.Directory.GetFiles sınıfını kullanarak Dosyalar adındaki dizimize listeyi alıyoruz. System.IO.Directory.GetFiles sınıfı dosyaların listesini geriye dosyaların tam yolu ile döndürüyor. Biz dosyaların yol bilgisinin ZIP dosyasına aktarılmasını istemediğimiz için dizideki her bir öğeyi for döngüsü ile gezerek dosya isimlerini System.IO.Path.GetFileName sınıfı ile ayıklıyoruz.

Sıra geldi sıkıştırma işlemini yapmaya. Sıkıştırma işlemi için Sikistirici adında bir ZipFileCompressor yaratıyoruz. Esasen bu değişken yaratma işlemini yaparken sıkıştırma işini de yapmış olacağız. ZipFileCompressor tanımlarken verdiğimiz parametrelerden ilki yaratılacak ZIP dosyasının adı ve tam yolu. İkinci parametre tüm sıkıştırılacak dosyaların bulunduğu klasörün tam yolu, üçüncü parametre ise dosyalarımızın adlarının bulunduğu dizinin ta kendisi. Son olarak verdiğimiz iki parametreden ilki hedef konumda başka bir ZIP dosyası varsa silinip silinmeyeceğini diğeri ise bir hata durumunda sıkıştırmanın iptal edilip edilmeyeceğini belirliyor.

Hepinize kolay gelsin.

Döküman Arama

Başlık :

Kapat