[
  {
    "Id": "101294",
    "ThreadId": "30409",
    "Html": "&nbsp; Hello!<br>\r\n<br>\r\nI was looking for ZIP library for my small project or few days and it seems to me finally I found everything I need! Thanks for your great job!<br>\r\n<br>\r\nI am wondering if you point me the easiest way to convert my existent code like:<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamReader file = new System.IO.StreamReader(_fileName, _fileEncoding);<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (!file.EndOfStream)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; &nbsp;&nbsp;  ...<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  }<br>\r\n<br>\r\ninto code with ZIP file support. I'm trying to rewrite code like this:<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZipFile zip = new ZipFile(_zipFileName);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (ZipEntry ze in zip)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ze.FileName.EndsWith (_fileName))<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamReader file = new StreamReader(<strong>May I get stream from ZipEntry here?</strong>);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while (!file.EndOfStream)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; ...<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>\r\n<br>\r\nbut unfortunately can't find proper solution to get stream from ZipEntry.<br>\r\n<br>\r\n&nbsp; Thank you in advance!<br>\r\n<br>\r\n<br>\r\n",
    "PostedDate": "2008-06-27T10:03:56.04-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "101306",
    "ThreadId": "30409",
    "Html": "<p>you can extract to an output stream.</p>\r\n<p>One of the methods on the ZipFile is Extract(Filename, OutputStream);</p>\r\n<p>does that help?</p>\r\n",
    "PostedDate": "2008-06-27T11:07:44.927-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "101321",
    "ThreadId": "30409",
    "Html": "I have tried this:<br>\r\n<br>\r\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MemoryStream memStream = new MemoryStream();<br>\r\n</strong>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZipFile zip = new ZipFile(_zipFileName);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (ZipEntry ze in zip)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ze.FileName.EndsWith (_fileName))<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ze.Extract(memStream);<br>\r\n</strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>\r\n<strong><br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memStream.Seek(0, SeekOrigin.Begin);<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamReader file = new StreamReader(memStream, _fileEncoding);<br>\r\n</strong>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while (!file.EndOfStream)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp; ... read file<br>\r\n&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n<br>\r\nIt's works fine but consumes a lot of memory on large files because of temporary MemoryStream. I just had expected a direct way to read ZipEntry as a stream... Something like:<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  StreamReader file = new StreamReader (zipEntry.ToStream(), _encoding);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... read file line by line<br>\r\n<br>\r\nBut anyway, thanks for your response!<br>\r\n<br>\r\n",
    "PostedDate": "2008-06-27T12:44:32.93-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "101340",
    "ThreadId": "30409",
    "Html": "Sounds like a good feature request. . . <br>\r\n",
    "PostedDate": "2008-06-27T14:37:45.423-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "101341",
    "ThreadId": "30409",
    "Html": "I think it would be nice to have such a feature. Please consider on this :)<br>\r\n<br>\r\nBecause I read this file twice, my final piece of code looks like:<br>\r\n<br>\r\n<strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; byte[] fileArray = new byte[0];<br>\r\n</strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; using (ZipFile zip = new ZipFile(_zipFileName))<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; foreach (ZipEntry ze in zip)<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (ze.FileName.EndsWith(_fileName))<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n<strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; using (MemoryStream ms = new MemoryStream())<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ze.Extract(ms);<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fileArray = ms.ToArray();<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n</strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n<br>\r\n<strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; StreamReader file = new StreamReader(new MemoryStream (fileArray));<br>\r\n</strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ... read encoding specified in file<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file.Close();<br>\r\n<br>\r\n<strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file = new StreamReader(new MemoryStream (fileArray), _fileEncoding);<br>\r\n</strong>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ... read file again with correct encoding<br>\r\n<br>\r\n",
    "PostedDate": "2008-06-27T15:06:06.897-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "102861",
    "ThreadId": "30409",
    "Html": "Abudaba, I added this capability&nbsp;in v1.6, check it out, see if it satisfies you. . . <br>\r\n",
    "PostedDate": "2008-07-05T12:48:49.53-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "102873",
    "ThreadId": "30409",
    "Html": "Thanks a lot! I'll check it out.<br>\r\n<br>\r\nYou're doing a great job, really.<br>\r\n",
    "PostedDate": "2008-07-05T15:16:57.723-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "103555",
    "ThreadId": "30409",
    "Html": "Abudaba, <br>\r\nCould you please provide me the full code for reading the entry into a stream directly<br>\r\n<br>\r\nI don't know how you get the correct encoding when you are reading the file for the second time. <br>\r\n<br>\r\nRegards<br>\r\n<br>\r\nM\r\n",
    "PostedDate": "2008-07-09T02:41:48.98-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "103574",
    "ThreadId": "30409",
    "Html": "It's a file with a certain format. Actually, it's a OpenOffice spelling dictionary. It has special option like:<br>\r\n<br>\r\nSET ISO8859-1<br>\r\n<br>\r\nSo I just parse this file looking for this SET option first, then re-open it with specified encoding.<br>\r\n<br>\r\nThere a bit of code, and I don't think it will be suitable for your purposes.<br>\r\n<br>\r\n",
    "PostedDate": "2008-07-09T04:49:39.277-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "103626",
    "ThreadId": "30409",
    "Html": "So, Abudaba, what did you think of the v1.6 feature?<br>\r\ndidja try it? <br>\r\n",
    "PostedDate": "2008-07-09T08:38:07.37-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "103669",
    "ThreadId": "30409",
    "Html": "I have tried to try it :) But unfortunately for my small project I use Visual C# Express, and I have no SVN client installed on my home laptop, so it's really complicated to check it out and compile.<br>\r\n<br>\r\nSorry :(<br>\r\n<br>\r\n",
    "PostedDate": "2008-07-09T11:38:24.29-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "103679",
    "ThreadId": "30409",
    "Html": "Abudaba, <br>\r\n<br>\r\na)&nbsp;you don't need a SVN client to check out code to build. <br>\r\n- if you want to check out code, you can use the codeplex client thing, which is small and easy to download and run.&nbsp; It is on&nbsp;<br>\r\n<a href=\"http://www.codeplex.com/CodePlexClient/Release/ProjectReleases.aspx?ReleaseId=4423\">http://www.codeplex.com/CodePlexClient/Release/ProjectReleases.aspx?ReleaseId=4423</a><br>\r\n- you don't need any source-control client at all.&nbsp; Just go the the Source tab and click on the download link for the change set.&nbsp; You will get a zip file.&nbsp; Unpack it and all the source is there. No need for check-out. <br>\r\n<br>\r\nb) You don't need to compile the source to use it.&nbsp; The change I described is in the v1.6 preview binary, which is available on the Releases tab for DotNetZip. <br>\r\n<br>\r\ncan you give it a try? <br>\r\nlet me know what you think. . .<br>\r\n",
    "PostedDate": "2008-07-09T12:43:43.693-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "103729",
    "ThreadId": "30409",
    "Html": "Sorry, I haven't seen &quot;Planned&quot; tab on the &quot;Releases&quot; page:)<br>\r\n<br>\r\nI have updated to 1.6 and have got ArgumentException at once with message &quot;Invalid input&quot;, paramname: &quot;outstream | basedir&quot;. Context is:<br>\r\n<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; using (MemoryStream ms = new MemoryStream())<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ze.Extract(ms);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; affarray = ms.ToArray();<br>\r\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>\r\n<br>\r\nWith 1.5 works fine.<br>\r\n",
    "PostedDate": "2008-07-09T15:25:27.017-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "103767",
    "ThreadId": "30409",
    "Html": "<p>yeap, a very basic bug there. I've uploaded a new binary.</p>\r\n<p>you can try again when you have a&nbsp; moment. </p>\r\n<p>&nbsp;</p>\r\n",
    "PostedDate": "2008-07-09T21:57:56.607-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "104318",
    "ThreadId": "30409",
    "Html": "Sorry for delay in response and thank you for bugfix!<br>\r\n<br>\r\nToday I have tried 1.6 again. I have rewrote my piece of code like this:<br>\r\n<br>\r\n#if (ZIPSTREAM)<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AnalyseFile(zipFile + &quot;: &quot; + ze.FileName, e, worker,<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ze.OpenReader());<br>\r\n#else<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] filearray = new byte[0];<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (MemoryStream ms = new MemoryStream())<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ze.Extract(ms);<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filearray = ms.ToArray();<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AnalyseFile(zipFile + &quot;: &quot; + ze.FileName, e, worker,<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new MemoryStream(filearray));<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filearray = null;<br>\r\n#endif<br>\r\n<br>\r\nAs you can see, now code is much smaller and much more clear, it's cool! I have compared performance and memory consumption for both pieces of code. Stream have smaller memory footprint, but it is a little bit slower (about 5%). I think it's predictable, so there is nothing to complain.<br>\r\n<br>\r\nSo, in general it works just fine. Thank you very much!<br>\r\n<br>\r\n<br>\r\n",
    "PostedDate": "2008-07-12T12:11:26.433-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "104326",
    "ThreadId": "30409",
    "Html": "<p>I'm glad it works.&nbsp; It's odd that it is slower; I would think the opposite would be true. </p>\r\n<p>I guess it depends how your routine &quot;AnalyzeFile&quot; works.&nbsp; If it reads a few bytes at a time from the stream you pass in, then the OpenReader() option would be slower, I'd expect.&nbsp; The normal ZipEntry.Extract(Stream) routine can extract in big chunks (4k at a time).&nbsp; So if your AnalyzeFile is reading only a few bytes at a time, I'd guess it would be less efficient.&nbsp; The cost of reading a few bytes at a time from a MemorySstream is probably much lower, than the cost of reading a few bytes at a time from a stream connected to disk i/o (which is what you get with OpenReader().&nbsp;If you want to play with it, you could try to wrap the output of OpenReader() in a BufferedStream(), and measure the difference.&nbsp; See if that works and if it speeds things up a bit. <br>\r\n<br>\r\neg<br>\r\n<br>\r\nAnalyseFile(zipFile + &quot;: &quot; + ze.FileName, e, worker,<br>\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new BufferedStream(ze.OpenReader()));<br>\r\n<br>\r\n<br>\r\nNot sure if this will work, but worth trying. Anyway, I'm glad you like it. </p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n",
    "PostedDate": "2008-07-12T13:38:18.357-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "105131",
    "ThreadId": "30409",
    "Html": "Cheeso,<br>\r\n<br>\r\nJust a word to say that this feature is great, I tried using it in SSIS and works fine. I am speaking about you here:<br>\r\n<br>\r\n<a href=\"http://sqlblog.com/blogs/alberto_ferrari/archive/2008/07/16/reading-zip-files-with-ssis.aspx\">http://sqlblog.com/blogs/alberto_ferrari/archive/2008/07/16/reading-zip-files-with-ssis.aspx</a><br>\r\n<br>\r\nThanks.<br>\r\n<br>\r\nAlberto\r\n",
    "PostedDate": "2008-07-16T09:27:49.513-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "105133",
    "ThreadId": "30409",
    "Html": "<p>Ferrari - you have a speedy name.</p>\r\n<p>I'm glad you found it useful! </p>\r\n",
    "PostedDate": "2008-07-16T09:35:37.34-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  }
]