/// Simulate "CanSeek" is false, which is the case when you are retreiving data from web.
/// </summary>
public override bool CanSeek => false;
+
+ public override long Position {
+ get {throw new NotSupportedException();}
+ set {throw new NotSupportedException();}
+ }
}
[Test]
{
}
}
+
+ [Test]
+ public void ZipWriteNonSeekableStream() {
+ var stream = new MyFakeStream( "test.nupkg", FileMode.Open );
+ using ( var archive = new ZipArchive( stream, ZipArchiveMode.Create ) ) {
+ var entry = archive.CreateEntry( "foo" );
+ using ( var es = entry.Open() ) {
+ es.Write( new byte[] { 4, 2 }, 0, 2 );
+ }
+ }
+ }
}
}
private void Save()
{
- using (var newZip = new MemoryStream()) {
- zipFile.SaveTo(newZip, CompressionType.Deflate, entryNameEncoding ?? Encoding.UTF8);
+ if (mode == ZipArchiveMode.Create)
+ {
+ zipFile.SaveTo(stream, CompressionType.Deflate, entryNameEncoding ?? Encoding.UTF8);
+ }
+ else {
+ using (var newZip = new MemoryStream())
+ {
+ zipFile.SaveTo(newZip, CompressionType.Deflate, entryNameEncoding ?? Encoding.UTF8);
- stream.SetLength(0);
- stream.Position = 0;
- newZip.Position = 0;
- newZip.CopyTo(stream);
+ stream.SetLength(0);
+ stream.Position = 0;
+ newZip.Position = 0;
+ newZip.CopyTo(stream);
+ }
}
}