[
  {
    "Id": "119348",
    "ThreadId": "35914",
    "Html": "Hi Cheeso,<br>\r\nI am currently using both your Zip classes and the classes from&nbsp;<span style=\"font-size:13px\">ICSharpCode.SharpZipLib.<br>\r\nI would very much like to consolidate all the zipping functionality into one set of classes (yours).<br>\r\nThe functionality I need is to be able to treat the zip entity as a byte array and then compress/decompress it.<br>\r\n<br>\r\nPlease see my current functions below as an example<br>\r\n<br>\r\n<span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">\r\n<p>public</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px\"></span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">static</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">byte</span></span><span style=\"font-size:13px\">[] PackFile(</span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">String</span></span><span style=\"font-size:13px\"> filePath) {\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">byte</span></span><span style=\"font-size:13px\">[] b = </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">File</span></span><span style=\"font-size:13px\">.ReadAllBytes(filePath);\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">Int32</span></span><span style=\"font-size:13px\"> size = b.Length;\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">MemoryStream</span></span><span style=\"font-size:13px\"> ms = </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">new</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">MemoryStream</span></span><span style=\"font-size:13px\">();\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">// Prepend the compressed data with the length of the uncompressed data (firs 4 bytes)\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">//\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BinaryWriter</span></span><span style=\"font-size:13px\"> writer = </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">new</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BinaryWriter</span></span><span style=\"font-size:13px\">(ms);\r\n<p>&nbsp;</p>\r\n<p>writer.Write(size);</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">// compress the data\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">//\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BZip2OutputStream</span></span><span style=\"font-size:13px\"> zos = </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">new</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BZip2OutputStream</span></span><span style=\"font-size:13px\">(ms);\r\n<p>&nbsp;</p>\r\n<p>zos.Write(b, 0, size);</p>\r\n<p>zos.Close();</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">return</span></span><span style=\"font-size:13px\"> ms.ToArray();\r\n<p>&nbsp;</p>\r\n<p>}</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">public</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">static</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">byte</span></span><span style=\"font-size:13px\">[] UnpackFile(</span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">byte</span></span><span style=\"font-size:13px\">[] compressesBytes) {\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">MemoryStream</span></span><span style=\"font-size:13px\"> ms = </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">new</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">MemoryStream</span></span><span style=\"font-size:13px\">(compressesBytes);\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">// read final uncompressed string size stored in first 4 bytes\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">//\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BinaryReader</span></span><span style=\"font-size:13px\"> reader = </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">new</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BinaryReader</span></span><span style=\"font-size:13px\">(ms);\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">Int32</span></span><span style=\"font-size:13px\"> size = reader.ReadInt32();\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">// decompress string\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#008000\"><span style=\"font-size:13px;color:#008000\">//\r\n<p>&nbsp;</p>\r\n</span></span>\r\n<p>&nbsp;</p>\r\n<span style=\"font-size:13px\">\r\n<p>&nbsp;</p>\r\n</span>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BZip2InputStream</span></span><span style=\"font-size:13px\"> zis = </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">new</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">BZip2InputStream</span></span><span style=\"font-size:13px\">(ms);\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">Byte</span></span><span style=\"font-size:13px\">[] bytesBuffer = </span><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">new</span></span><span style=\"font-size:13px\"> </span><span style=\"font-size:13px;color:#2b91af\"><span style=\"font-size:13px;color:#2b91af\">Byte</span></span><span style=\"font-size:13px\">[size];\r\n<p>&nbsp;</p>\r\n<p>zis.Read(bytesBuffer, 0, bytesBuffer.Length);</p>\r\n<p>zis.Close();</p>\r\n<p>ms.Close();</p>\r\n<p>&nbsp;</p>\r\n</span>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-size:13px;color:#0000ff\"><span style=\"font-size:13px;color:#0000ff\">return</span></span><span style=\"font-size:13px\"> bytesBuffer;\r\n<p>&nbsp;</p>\r\n<p>}</p>\r\n</span>\r\n<p>&nbsp;</p>\r\nAs always any help here would be greatly appreciated.<br>\r\n<br>\r\nMany Thanks<br>\r\n<br>\r\nFrazer<br>\r\n</span>\r\n",
    "PostedDate": "2008-09-18T04:43:38.91-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "119670",
    "ThreadId": "35914",
    "Html": "Hi.<br>\r\n<br>\r\nI'm not clear what you want to do. <br>\r\n<br>\r\nI looked at the code you included.&nbsp; It seems like what you want is to take an individual file and compress it.&nbsp; Is that right?&nbsp; and the output should be a byte array or stream.&nbsp; Is that right? <br>\r\n<br>\r\nIf so, then you should look into the DeflateStream in the System.IO.Compression namespace, or the GZipStream in the same namespace. <br>\r\n<br>\r\nThese classes are included in the base class library for .NET.&nbsp; They can compress individual files - the input is a stream (like the memorystream from your sample code) and the output is a stream of bytes that has been compressed.&nbsp; It is fully reversible; you can use the same class with the &quot;uncompress&quot; option on it to uncompress the compressed stream. <br>\r\n<br>\r\nThese streams do not produce zip files - they produced compressed streams, or if you like, byte arrays.&nbsp; The zipfile itself has a structure with header info and &quot;metadata&quot; (data about the files stored in the zip file).&nbsp; This metadata is not produced by the DeflateStream (nor the GzipStream).&nbsp; The metadata is why you need the DotNetZip library (or #ziplib). <br>\r\n<br>\r\nDoes this help?\r\n",
    "PostedDate": "2008-09-19T12:38:48.837-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "120315",
    "ThreadId": "35914",
    "Html": "Hi Cheeso,<br>\r\n<br>\r\nFunny how you overlook the simple things sometimes....<br>\r\n<br>\r\nI am now using the System.IO.Compression namespace and works like a charm.<br>\r\n<br>\r\nMany thanks<br>\r\n<br>\r\nFrazer\r\n",
    "PostedDate": "2008-09-23T02:18:51.53-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  }
]