/// <summary>
/// Extracts the specified zip file stream.
/// </summary>
/// <param name="fileStream">The zip file stream.</param>
/// <returns></returns>
public bool Extract(Stream fileStream) {
if (null==fileStream)
return false;
CleanFromTemp(false);
NewTempPath();
_isValid=true;
ZipFile zipFile=null;
try {
zipFile=new ZipFile(fileStream);
IEnumerator enumerator=zipFile.GetEnumerator();
while (enumerator.MoveNext()) {
var entry=(ZipEntry)enumerator.Current;
ExtractZipEntry(zipFile, entry);
}
} catch (Exception ex) {
_isValid=false;
_exceptionMessage=ex.Message;
CleanFromTemp(true);
//true tells CleanFromTemp not to raise an IO Exception if this operation fails. If it did then the real error here would be masked
} finally {
fileStream.Dispose();
if (null!=zipFile)
zipFile.Dispose();
}
return _isValid && CheckFolderTree();
}