﻿
{"id":2970,"date":"2014-08-08T16:15:47","date_gmt":"2014-08-08T16:15:47","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=2970"},"modified":"2014-08-08T16:17:45","modified_gmt":"2014-08-08T16:17:45","slug":"c-shell32-kutuphanesi-ile-dosya-sikistirma","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-shell32-kutuphanesi-ile-dosya-sikistirma\/","title":{"rendered":"C# &#8211; Shell32 K\u00fct\u00fcphanesi \u0130le Dosya S\u0131k\u0131\u015ft\u0131rma"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>\u00d6nceki yaz\u0131lar\u0131mdan <a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-system-io-packaging-kutuphanesi-ile-dosya-sikistirma\/\" target=\"_blank\">C# &#8211; System.IO.Packaging K\u00fct\u00fcphanesi \u0130le Dosya S\u0131k\u0131\u015ft\u0131rma<\/a> ve <a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-dotnetzip-kutuphanesi-ile-dosya-sikistirma\/\" target=\"_blank\">C# &#8211; DotNetZip K\u00fct\u00fcphanesi \u0130le Dosya S\u0131k\u0131\u015ft\u0131rma<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131lar\u0131mda C# ile s\u0131k\u0131\u015ft\u0131rma tekniklerine de\u011finmi\u015ftim.Bu yaz\u0131m\u0131zda son olarak C#&#8217;ta Shell32 k\u00fct\u00fcphanesi ile dosya s\u0131k\u0131\u015ft\u0131rmay\u0131 de\u011finece\u011fiz.<br \/>\n<!--more--><br \/>\nHer iki yaz\u0131mda da oldu\u011fu gibi bu yaz\u0131mda da g\u00f6sterece\u011fim teknik di\u011ferlerine benzeyecektir.<\/p>\n<p>Bu teknikte her\u015feyden \u00f6nce Shell32.dll dosyas\u0131n\u0131 indirip projemize referans olarak entegre etmemiz gerekmektedir.<\/p>\n<p>Dosyay\u0131 <a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2014\/08\/Shell32.rar\">buradan<\/a> indirebilirsiniz.<\/p>\n<p>\u00d6ncelikle Base Class olarak kullanaca\u011f\u0131m\u0131z \u201cArchiveObj\u201d ve \u201cArchiveCreator\u201d isimli iki adet abstract s\u0131n\u0131f\u0131m\u0131z\u0131 olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\npublic abstract class ArchiveObj\r\n{\r\n    internal String strPath;\r\n    internal List&lt;String&gt; lError;\r\n    internal List&lt;String&gt; lFiles;\r\n    public String&#x5B;] ErrorList\r\n    {\r\n        get\r\n        {\r\n            return lError.ToArray();\r\n        }\r\n    }\r\n    public ArchiveObj()\r\n    {\r\n        lFiles = new List&lt;string&gt;();\r\n        lError = new List&lt;string&gt;();\r\n    }\r\n    public Boolean AddFile(String strFile)\r\n    {\r\n        lFiles.Add(strFile);\r\n        return true;\r\n    }\r\n    public abstract int SaveArchive();\r\n}\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\npublic abstract class ArchiveCreator\r\n{\r\n    internal String strPath;\r\n    public abstract ArchiveObj GetArchieve();\r\n}\r\n<\/pre>\n<p>\u015eimdide projemize &#8220;ZipShell.cs&#8221; isimli bir s\u0131n\u0131f ekleyerek i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class ZipShell : ArchiveObj\r\n    {\r\n        private ZipShell() { }\r\n        public ZipShell(String sPath)\r\n        {\r\n            strPath = sPath;\r\n        }\r\n        public override int SaveArchive()\r\n        {\r\n            CreateZip(strPath);\r\n            foreach (String strFile in lFiles)\r\n                ZipCopyFile(strFile);\r\n            return 1;\r\n        }\r\n        public bool CreateZip(String strZipFile)\r\n        {\r\n            try\r\n            {\r\n                ASCIIEncoding Encoder = new ASCIIEncoding();\r\n                byte&#x5B;] baHeader = System.Text.Encoding.ASCII.GetBytes((&quot;PK&quot; + (char)5 + (char)6).PadRight(22, (char)0));\r\n                FileStream fs = System.IO.File.Create(strZipFile);\r\n                fs.Write(baHeader, 0, baHeader.Length);\r\n                fs.Flush();\r\n                fs.Close();\r\n                fs = null;\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n            }\r\n            return true;\r\n        }\r\n        private bool ZipCopyFile(String strFile)\r\n        {\r\n            Shell Shell = new Shell();\r\n            int iCnt = Shell.NameSpace(strPath).Items().Count;\r\n            Shell.NameSpace(strPath).CopyHere(strFile, 0); \/\/ Copy file in Zip\r\n            if (Shell.NameSpace(strPath).Items().Count == (iCnt + 1))\r\n            {\r\n                System.Threading.Thread.Sleep(100);\r\n            }\r\n            return true;\r\n        }\r\n    }\r\n<\/pre>\n<p>Hemen ard\u0131ndan &#8220;ZipShellCreator.cs&#8221; isimli s\u0131n\u0131f\u0131m\u0131z\u0131 olu\u015fturup i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi yazal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class ZipShellCreator : ArchiveCreator\r\n    {\r\n        private ZipShellCreator() { }\r\n        public ZipShellCreator(String sPath)\r\n        {\r\n            strPath = sPath;\r\n        }\r\n        public override ArchiveObj GetArchieve()\r\n        {\r\n            return new ZipShell(strPath);\r\n        }\r\n    }\r\n<\/pre>\n<p>Bu i\u015flemlerden sonra s\u0131k\u0131\u015ft\u0131rma i\u015flemimizi yapan program\u0131m\u0131z\u0131 tamamlam\u0131\u015f oluyoruz.\u015eimdi s\u0131ra program\u0131m\u0131z\u0131 kullanmaya geldi.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        private void Form1_Load(object sender, EventArgs e)\r\n        {\r\n            ArchiveCreator ssss = new ZipShellCreator(@&quot;D:\\Deneme\\arsiv.zip&quot;);\r\n            ArchiveObj xxxx = ssss.GetArchieve();\r\n            xxxx.AddFile(@&quot;D:\\Deneme\\a.txt&quot;);\r\n            xxxx.AddFile(@&quot;D:\\Deneme\\b.PNG&quot;);\r\n            xxxx.AddFile(@&quot;D:\\Deneme\\c.docx&quot;);\r\n            xxxx.SaveArchive();\r\n        }\r\n<\/pre>\n<p>Program\u0131 derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z zaman s\u0131k\u0131\u015ft\u0131rma i\u015flemini ba\u015far\u0131yla ger\u00e7ekle\u015ftirdi\u011fini g\u00f6receksiniz.<\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar diliyorum&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>\u00d6nceki yaz\u0131lar\u0131mdan C# &#8211; System.IO.Packaging K\u00fct\u00fcphanesi \u0130le Dosya S\u0131k\u0131\u015ft\u0131rma ve C# &#8211; DotNetZip K\u00fct\u00fcphanesi \u0130le Dosya S\u0131k\u0131\u015ft\u0131rma ba\u015fl\u0131kl\u0131 yaz\u0131lar\u0131mda C# ile s\u0131k\u0131\u015ft\u0131rma tekniklerine de\u011finmi\u015ftim.Bu yaz\u0131m\u0131zda son olarak C#&#8217;ta Shell32 k\u00fct\u00fcphanesi ile dosya s\u0131k\u0131\u015ft\u0131rmay\u0131 de\u011finece\u011fiz.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,338],"tags":[27,616,617,665,618],"class_list":["post-2970","post","type-post","status-publish","format-standard","hentry","category-c-sharp-c","category-c-5-0","tag-c","tag-dosya-sikistirma","tag-rar","tag-shell32","tag-zip"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=2970"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/2970\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=2970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=2970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=2970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}