// NonSeekableOutputStream.cs
// ------------------------------------------------------------------
//
// Need a non-seekable output stream to test ZIP construction.
//
// ------------------------------------------------------------------
//
// Copyright (c) 2009 by Dino Chiesa
// All rights reserved!
//
// ------------------------------------------------------------------
using System;
using System.IO;
namespace Ionic.Zip.Tests{
public class NonSeekableOutputStream : Stream
{
protected Stream _s;
protected bool _disposed;
public NonSeekableOutputStream (Stream s) : base()
{
if (!s.CanWrite)
throw new NotSupportedException();
_s = s;
}
public override int Read(byte[] buffer, int offset, int count)
{
throw new NotSupportedException();
}
public override void Write(byte[] buffer, int offset, int count)
{
_s.Write(buffer, offset, count);
}
public override bool CanRead
{
get { return false; }
}
public override bool CanSeek
{
get { return false; }
}
public override bool CanWrite
{
get { return true; }
}
public override void Flush()
{
_s.Flush();
}
public override long Length
{
get { return _s.Length; }
}
public override long Position
{
get { return _s.Position; }
set { _s.Position = value; }
}
public override long Seek(long offset, System.IO.SeekOrigin origin)
{
throw new NotSupportedException();
}
public override void SetLength(long value)
{
_s.SetLength(value);
}
protected override void Dispose(bool disposing)
{
try
{
if (!_disposed)
{
if (disposing && (this._s != null))
this._s.Dispose();
_disposed = true;
}
}
finally
{
base.Dispose(disposing);
}
}
}
}
|