public void Close() { if (_File == null) { return; } if (_Mode == Mode.Write) { if (_UnitBlock[0] != 0) { Array.Copy(_UnitBlock, 0, _Segment, _CurrentUnitIndex * UnitBlockSize, _UnitBlock.Length); } if (_Segment[0] != 0) { _File.Write(_Segment, 0, _Segment.Length); } _File.Flush(); } _File.Close(); _File = null; }
/// <summary> /// /// </summary> /// <param name="fileName">DDX file path</param> /// <param name="write">if true for write else for read</param> public DDXFile(string filePath, Mode mode) { _Mode = mode; _FilePath = filePath; if (_Mode == Mode.Write) { _TempMem = new MemoryStream(256); _UnitBlock = new byte[UnitBlockSize]; _Segment = new byte[SegmentSize]; //One segment include 32 unit blocks . //_File = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite); _File = new Hubble.Framework.IO.CachedFileStream(filePath, FileMode.Create, FileAccess.ReadWrite); } else if (_Mode == Mode.Enum) { //_File = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); _File = new Hubble.Framework.IO.CachedFileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); } else if (_Mode == Mode.Read) { //_File = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); _File = new Hubble.Framework.IO.CachedFileStream(Hubble.Framework.IO.CachedFileStream.CachedType.NoCache, filePath, FileMode.Open, FileAccess.Read, FileShare.Read); GetSegmentStartStrings(); } }
/// <summary> /// Close .idx file /// </summary> public void Close() { try { if (_IndexFile != null) { if (_Mode == Mode.Write) { _IndexFile.Flush(); } _IndexFile.Close(); _IndexFile = null; } } catch { } }
/// <summary> /// Constractor /// </summary> /// <param name="filePath">.idx file path</param> /// <param name="mode">file access mode</param> public IDXFile(string filePath, Mode mode) { _Mode = mode; _FilePath = filePath; switch (mode) { case Mode.Read: //_IndexFile = new FileStream(_FilePath, FileMode.Open, FileAccess.Read, FileShare.Read); _IndexFile = new Hubble.Framework.IO.CachedFileStream(Hubble.Framework.IO.CachedFileStream.CachedType.NoCache, _FilePath, FileMode.Open, FileAccess.Read, FileShare.Read); break; case Mode.Write: //_IndexFile = new FileStream(_FilePath, FileMode.Create, FileAccess.ReadWrite); _IndexFile = new Hubble.Framework.IO.CachedFileStream(_FilePath, FileMode.Create, FileAccess.ReadWrite); break; } }