{
  "WorkItem": {
    "AffectedComponent": {
      "Name": "",
      "DisplayName": ""
    },
    "ClosedComment": "implemented in change set 27130.   First available in release v1.7.1.9.",
    "ClosedDate": "2008-12-21T22:28:44.63-08:00",
    "CommentCount": 0,
    "Custom": null,
    "Description": "Optimize the ctor or the Read() method to read only the central directory structure at the end of the zip archive, rather than reading through the entire zip file to find each zip entry.  \n \nTest the performance difference.\n \nMust verify interop as well - do all other archiver programs properly produce the central directory structure?",
    "LastUpdatedDate": "2013-05-16T05:32:35.523-07:00",
    "PlannedForRelease": "",
    "ReleaseVisibleToPublic": false,
    "Priority": {
      "Name": "High",
      "Severity": 150,
      "Id": 3
    },
    "ProjectName": "DotNetZip",
    "ReportedDate": "2008-11-17T10:11:43.997-08:00",
    "Status": {
      "Name": "Closed",
      "Id": 4
    },
    "ReasonClosed": {
      "Name": "Unassigned"
    },
    "Summary": "Optimize ZipFile.Read by using the Central Directory Structure",
    "Type": {
      "Name": "Feature",
      "Id": 1
    },
    "VoteCount": 2,
    "Id": 6612
  },
  "FileAttachments": [],
  "Comments": [
    {
      "Message": "You can handle this workitem like that :\r\n- If a directory structure exist use it\r\n- If not use your current system\r\n\r\nI think that on big ZIP file, performance should be a lot faster.",
      "PostedDate": "2008-11-17T11:41:45.567-08:00",
      "Id": -2147483648
    },
    {
      "Message": "Hey there, \r\nTo continue with the forum post, the performance difference should be huge. Currently I have an archive with 14473 files with a total size of 3.5 gigs and it takes ~10-15 minutes to read before I can actually extract. What is also possible is to read the directory structure on the fly. Meaning only the root level will be read upfront and then if someone wants to navigate through the individual directories will be read too.\r\n\r\nI'm not sure how the guys in WinRAR handle this but it doesn't take even a second to open my 3.5gigs archive.\r\n",
      "PostedDate": "2008-11-18T00:24:43.673-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2008-11-25T01:11:08.817-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2008-12-18T16:03:22.857-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2008-12-18T19:05:22.433-08:00",
      "Id": -2147483648
    },
    {
      "Message": "I investigated doing this.  It became very complicated, starting from the existing architecture.  The central directory structure is easy enough to read, and it always exists.   But, it contains different metadata than the metadata embedded in the \"local file header\" for each entry in the archive.  Much of it is the same, but there is some metadata present in only the former, and some only in the latter.  \r\n\r\nAttempting to use the central dir structure resulted in very complicated code, lots of special cases, very hard to maintain.  \r\n\r\nIf there is a performance problem with large archives, I am inclined to attempt to fix it in a different way.  Stream buffering or something.  \r\n",
      "PostedDate": "2008-12-18T19:08:55.323-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2008-12-18T19:09:07.2-08:00",
      "Id": -2147483648
    },
    {
      "Message": "Won't fix.\r\n\r\n** Closed by Cheeso 12/18/2008 7:09 PM",
      "PostedDate": "2008-12-21T22:26:18.63-08:00",
      "Id": -2147483648
    },
    {
      "Message": "will fix.\r\n",
      "PostedDate": "2008-12-21T22:26:19.16-08:00",
      "Id": -2147483648
    },
    {
      "Message": "in my testing for zip64, with really large files, I got tired of waiting for the initial scan of the file.  The need for this change became really apparent to me.  So I implemented it.  I think it's working.  Try it out. \r\nchange set 27130. ",
      "PostedDate": "2008-12-21T22:28:11.613-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2008-12-21T22:28:12.33-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2008-12-21T22:28:44.63-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2013-02-21T18:44:36.407-08:00",
      "Id": -2147483648
    },
    {
      "Message": "",
      "PostedDate": "2013-05-16T05:32:35.523-07:00",
      "Id": -2147483648
    }
  ]
}