public override Stream ConvertTemporaryToFinal() {
if (temporaryStream_==null) {
throw new ZipException("No temporary stream has been created");
}
Stream result=null;
string moveTempName=GetTempFileName(fileName_, false);
bool newFileCreated=false;
try {
temporaryStream_.Dispose();
File.Move(fileName_, moveTempName);
File.Move(temporaryName_, fileName_);
newFileCreated=true;
File.Delete(moveTempName);
result=File.Open(fileName_, FileMode.Open, FileAccess.Read, FileShare.Read);
} catch (Exception) {
result=null;
// Try to roll back changes...
if (!newFileCreated) {
File.Move(moveTempName, fileName_);
File.Delete(temporaryName_);
}
throw;
}
return result;
}