コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
 public SqexFileStream OpenStream(string basePath, FileMode mode, int tries = 5, int sleeptime = 1) =>
 SqexFileStream.WaitForStream($@"{basePath}/{RelativePath}", mode, tries, sleeptime);