protected override Task <Stream> OpenFileStreamAsyncInternal(string path, FileAccess accessType) { if (Path.Equals(path, StringComparison.OrdinalIgnoreCase)) { return(File.OpenAsync(accessType)); } return(Task.FromResult(default(Stream))); }
public async Task <string> ComputeMD5Async(IFileInfo file) { using (var inputStream = await file.OpenAsync(FileAccess.Read)) using (var hasher = IncrementalHash.CreateHash(HashAlgorithmName.MD5)) { var buffer = new byte[1024 * 1024]; while (inputStream.Position < inputStream.Length) { var bytesRead = await inputStream.ReadAsync(buffer, 0, buffer.Length); hasher.AppendData(buffer, 0, bytesRead); } var hashBytes = hasher.GetHashAndReset(); var hashString = BitConverter.ToString(hashBytes); return(hashString.Replace("-", string.Empty)); } }
public async Task InitializeAsync() { var stream = await ArchiveFile.OpenAsync(FileAccess.Read); using (var archive = new ZipArchive(stream, ZipArchiveMode.Read)) { foreach (var i in archive.Entries) { using (var entryStream = i.Open()) { var memoryStream = new MemoryStream(); await entryStream.CopyToAsync(memoryStream); EntriesBufferMapping.Add(Path.Combine(HandledScheme, i.FullName), memoryStream.ToArray()); } } } }