public ZipFileExtractor (Stream archiveStream)
    {
      ArgumentUtility.CheckNotNull ("archiveStream", archiveStream);
      _archiveStream = archiveStream;

      _zipFile = new ZipFile (_archiveStream);
      _zipFile.NameTransform = new WindowsNameTransform();
      var directoryTreeResolver = new DirectoryTreeResolver (DateTime.Now);
      _files = GetFilesInternal(directoryTreeResolver);
      _root = new InMemoryDirectoryInfo ("\\\\", null, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow);
      _root.Directories.AddRange (directoryTreeResolver.GetRootDirectories());
    }
    private IFileInfo[] GetFilesInternal (DirectoryTreeResolver treeResolver)
    {
      var files = new List<IFileInfo>();

      foreach (ZipEntry zipEntry in _zipFile)
      {
        if (zipEntry.IsFile)
        {
          var localZipEntry = zipEntry;
          var fileInfo = treeResolver.GetFileInfoWithPath (
              _zipFile.NameTransform.TransformFile (localZipEntry.Name),
              (fileName, directory) => new ExtractedZipEntryAsFileInfo (_zipFile, localZipEntry, directory));
          files.Add (fileInfo);
        }
      }

      return files.ToArray();
    }
 public void SetUp ()
 {
   _resolver = new DirectoryTreeResolver (new DateTime (2000, 1, 1));
 }