/// <summary> /// This method returns a readable data stream. /// </summary> /// <returns></returns> protected virtual Stream DataStreamRead() { Stream outStream; outStream = new FileStream(BinaryDataFileName, FileMode.Open, FileAccess.Read, FileShare.Read); if (Encrypted) outStream = new CryptoStream(outStream, RijndaelAlg.CreateDecryptor(), CryptoStreamMode.Read); if (Compressed) outStream = new GZipStream(outStream, CompressionMode.Decompress); outStream = new StreamCounter(outStream, StreamCounter.CounterDirection.Read, Length); return outStream; }
/// <summary> /// This method returns a writeable data stream. /// </summary> /// <returns></returns> protected virtual Stream DataStreamWrite() { Stream outStream = null; ; RijndaelAlg = new RijndaelManaged(); try { mFileStream = new FileStream(BinaryDataFileName, FileMode.CreateNew, FileAccess.Write, FileShare.None); outStream = mFileStream; if (Encrypted) { mEncrStream = new CryptoStream(outStream, RijndaelAlg.CreateEncryptor(), CryptoStreamMode.Write); outStream = mEncrStream; } if (Compressed) { mCompStream = new GZipStream(outStream, CompressionMode.Compress); outStream = mCompStream; } outStream = new StreamCounter(outStream); } catch (Exception ex) { //Just make sure that we don't leave anything open in case there is an error. if (outStream != null) outStream.Close(); mFileStream = null; mEncrStream = null; mCompStream = null; } return outStream; }