public SqexFileStream GetStream(string path, FileMode mode, int tries, int sleeptime) { // Normalise path path = Path.GetFullPath(path); if (_streams.TryGetValue(path, out var stream)) { return(stream); } stream = SqexFileStream.WaitForStream(path, mode, tries, sleeptime); _streams.Add(path, stream); return(stream); }
public static void WriteEmptyFileBlockAt(SqexFileStream stream, int offset, int blockNumber) { stream.WipeFromOffset(blockNumber << 7, offset); stream.Position = offset; using (var file = new BinaryWriter(stream, Encoding.Default, true)) { // FileBlockHeader - the 0 writes are technically unnecessary but are in for illustrative purposes // Block size file.Write(1 << 7); // ???? file.Write(0); // File size file.Write(0); // Total number of blocks? file.Write(blockNumber - 1); // Used number of blocks? file.Write(0); } }
public SqexFileStream OpenStream(string basePath, FileMode mode, int tries = 5, int sleeptime = 1) => SqexFileStream.WaitForStream($@"{basePath}/{RelativePath}", mode, tries, sleeptime);