Browse Source

removed extra memory stream

v2
Marcus Cuda 14 years ago
parent
commit
9851d536e1
  1. 33
      src/Numerics.IO/LinearAlgebra/IO/MatlabWriter.cs

33
src/Numerics.IO/LinearAlgebra/IO/MatlabWriter.cs

@ -286,30 +286,19 @@ namespace MathNet.Numerics.LinearAlgebra.IO
private static byte[] CompressData(byte[] data)
{
var adler = BitConverter.GetBytes(Adler32.Compute(data));
using (var stream = new MemoryStream())
using (var compressedStream = new MemoryStream())
{
stream.WriteByte(0x58);
stream.WriteByte(0x85);
using (var compressedStream = new MemoryStream())
compressedStream.WriteByte(0x58);
compressedStream.WriteByte(0x85);
using (var outputStream = new DeflateStream(compressedStream, CompressionMode.Compress, true))
{
using (var outputStream = new DeflateStream(compressedStream, CompressionMode.Compress))
{
outputStream.Write(data, 0, data.Length);
}
//something odd - we need to write the CRC to the memory stream before returning
//however, the CRC is being added before the data is compressed. It seems that
//both the memorystream and deflate stream need to be closed first, but then
//we cannot append the CRC. So I'm adding a second intermediate memory stream. There should
//be a better way --marcus
var compressedData = compressedStream.ToArray();
stream.Write(compressedData, 0, compressedData.Length);
}
stream.WriteByte(adler[3]);
stream.WriteByte(adler[2]);
stream.WriteByte(adler[1]);
stream.WriteByte(adler[0]);
return stream.ToArray();
outputStream.Write(data, 0, data.Length);
}
compressedStream.WriteByte(adler[3]);
compressedStream.WriteByte(adler[2]);
compressedStream.WriteByte(adler[1]);
compressedStream.WriteByte(adler[0]);
return compressedStream.ToArray();
}
}

Loading…
Cancel
Save