コード例 #1
0
        protected override Task <Stream> OpenFileStreamAsyncInternal(string path, FileAccess accessType)
        {
            if (Path.Equals(path, StringComparison.OrdinalIgnoreCase))
            {
                return(File.OpenAsync(accessType));
            }

            return(Task.FromResult(default(Stream)));
        }
コード例 #2
0
        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));
                }
        }
コード例 #3
0
        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());
                    }
                }
            }
        }