Ускоренная обработка больших файлов
//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);
}