void WriteHeader(bool notify) { using (LockWrite()) { m_Fs.Seek(0, SeekOrigin.Begin); m_Header.ToBinary(m_Bw); if (notify && !m_DelayedSync) { Sync(); } } }
void Create(int stringCount, int averageStringLength = DefaultAverageStringSize) { var header = new PropertyStringTableHeader(); header.version = Version; header.count = 0; header.symbolSlots = Math.Max(stringCount * HashFactor, 1); var bytesPerString = GetStringByteSize(averageStringLength); header.allocatedStringBytes = stringCount * bytesPerString; header.usedStringBytes = StringLengthByteSize; var buffer = new byte[GetSymbolsByteSize(header.symbolSlots) + header.allocatedStringBytes]; using (var bw = new BinaryWriter(File.Open(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite | FileShare.Delete))) { header.ToBinary(bw); bw.Write(buffer); } }