internal void WriteFile (FileStream fs, long offset, long size)
{
byte [] buffer = new byte [32*1024];
if (offset != 0)
fs.Position = offset;
long remain = size;
int n;
while (remain > 0 && (n = fs.Read (buffer, 0, (int) Math.Min (remain, 32*1024))) != 0){
remain -= n;
output_stream.Write (buffer, 0, n);
}
}