Ускоренная обработка больших файлов

//string filename = "123.txt";
foreach (var files in Directory.GetFiles(pathToDesktopDir, "*.*", SearchOption.TopDirectoryOnly))
using (var fsIn = new FileStream(files, FileMode.Open, FileAccess.Read))
using (var fsOut = new FileStream($"{files}.crypt", FileMode.CreateNew, FileAccess.Write))
using (var aes = Aes.Create())
using (var enc = aes.CreateEncryptor(new byte[16] /* ключ */, new byte[16] /* вектор */))
using (var cs = new CryptoStream(fsIn, enc, CryptoStreamMode.Write))
    cs.CopyTo(fsOut);

Большие файлы долго обрабатывает, прочёл что есть метод MemoryMappedFile который может обрабатывать большие файлы, подскажите как его можно использовать в коде выше??


Ответы (1 шт):

Автор решения: tym32167

Добавил немного буфера. Размер буфера подбирайте по своему разумению.

foreach (var files in Directory.GetFiles(pathToDesktopDir, "*.*", SearchOption.TopDirectoryOnly))
{   
    using (var fsIn = new BufferedStream(new FileStream(files, FileMode.Open, FileAccess.Read), 10*1024*1024))
    using (var fsOut = new BufferedStream(new FileStream($"{files}.crypt", FileMode.CreateNew, FileAccess.Write), 10*1024*1024))
    using (var aes = Aes.Create())
    using (var enc = aes.CreateEncryptor(new byte[16] /* ключ */, new byte[16] /* вектор */))
    using (var cs = new CryptoStream(fsIn, enc, CryptoStreamMode.Write))
        cs.CopyTo(fsOut);
}
→ Ссылка