public static UFileManager Create(string fileName, IDataSerializer serializer, bool crcEnabled, int blockSize = 4096) { UFileManager manager = new UFileManager(); manager.dataSerializer = serializer; manager.mainHeader = new Header(); manager.mainHeader.CRCEnabled = crcEnabled; manager.mainHeader.Filled = true; manager.mainHeader.LastBlock = true; manager.blockSize = blockSize; manager.fileMap = new Dictionary <string, long>(); manager.stream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.Read); manager.fileMap.Add("$_BlockSize_$", manager.blockSize); manager.AvailableEndBlockSize = blockSize - Header.HeaderSize; manager.AvailableMidBlockSize = manager.AvailableEndBlockSize - sizeof(long); byte[] mapBytes = serializer.Serialize(manager.fileMap); manager.FillData("", mapBytes, 0); //manager.mainHeader.Length = mapBytes.Length; //manager.mainHeader.SetChecksum(mapBytes); //byte[] header = Header.ToBytes(manager.mainHeader); //manager.stream.Write(header, 0, header.Length); //manager.stream.Write(mapBytes, 0, mapBytes.Length); //manager.stream.Flush(); return(manager); }
public UFEnumerator(UFileManager manager) { source = manager; keyEnumerator = source.fileMap.Keys.GetEnumerator(); }