public ZipArchiveDirectory(string storagePath)
{
if (String.IsNullOrEmpty(storagePath))
throw new ArgumentNullException("storagePath");
if (!File.Exists(storagePath))
throw new FileNotFoundException(storagePath + " does not resolve to an actual Zip Archive");
_storagePath = VirtualFileUtils.NormalizePath(Path.GetFullPath(storagePath));
_storage = ZipFile.Read(_storagePath);
_storage.CaseSensitiveRetrieval = false;
for (int i = 0; i < _storage.EntryFileNames.Count; i++)
_cache.Add(VirtualFileUtils.NormalizePath(_storage.EntryFileNames[i]), i);
}