/// Returns a writable stream to an empty subfile.
public Stream GetWriteStream(string subfileName)
{
Debug.Assert(!m_finished);
if (m_zipstream != null)
{
#if USE_DOTNETZIP
var entry = m_zipstream.PutNextEntry(subfileName);
entry.LastModified = System.DateTime.Now;
// entry.CompressionMethod = DotNetZip.CompressionMethod.None; no need; use the default
return(new ZipOutputStreamWrapper_DotNetZip(m_zipstream));
#else
var entry = new ZipLibrary.ZipEntry(subfileName);
entry.DateTime = System.DateTime.Now;
// There is such a thing as "Deflated, compression level 0".
// Explicitly use "Stored".
entry.CompressionMethod = (m_zipstream.GetLevel() == 0)
? ZipLibrary.CompressionMethod.Stored
: ZipLibrary.CompressionMethod.Deflated;
return(new ZipOutputStreamWrapper_SharpZipLib(m_zipstream, entry));
#endif
}
else
{
Directory.CreateDirectory(m_temporaryPath);
string fullPath = Path.Combine(m_temporaryPath, subfileName);
return(new FileStream(fullPath, FileMode.Create, FileAccess.Write));
}
}