public void copy(Stream @in)
{
if (_blocks != null)
{
for (; ; )
{
Block s = last();
if (s.isFull())
{
if (reachedInCoreLimit())
break;
s = new Block();
_blocks.Add(s);
}
int n = @in.Read(s.buffer, s.count, Block.SZ - s.count);
if (n < 1)
return;
s.count += n;
}
}
byte[] tmp = new byte[Block.SZ];
int nn;
while ((nn = @in.Read(tmp, 0, tmp.Length)) > 0)
diskOut.Write(tmp, 0, nn);
}