Копирование в C # очень медленно - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь скопировать много файлов, используя цикл и метод CopyTo. Копия очень медленная. около 10 мб в минуту! (в отличие от щелчка правой кнопкой мыши и копирования).

Есть ли какие-либо альтернативы, которые быстрее?

Ответы [ 3 ]

2 голосов
/ 23 июня 2011

Да, используйте FileStream для буферизации соответственно. Например, что-то вроде этого должно дать вам представление:

using (var inputStream = File.Open(path, FileMode.Read),
    outputStream = File.Open(path, FileMode.Create))
{
    var bufferRead = -1;
    var bufferLength = 4096;
    var buffer = new byte[bufferLength];

    while ((bufferRead = inputStream.Read(buffer, 0, bufferLength)) > 0)
    {
        outputStream.Write(buffer, 0, bufferRead);
    }
}

Отрегулируйте bufferLength соответственно. Вы могли бы потенциально построить вокруг этого вещи, чтобы повысить его общую скорость, но небольшая настройка все равно должна обеспечить достаточно значительное улучшение.

2 голосов
/ 23 июня 2011

Я думаю, что это поможет:

File.Copy или Manual FileStream.Write для копирования файла

Это также объясняет, почему функция копирования медленная.

1 голос
/ 23 июня 2011

Самый быстрый (и самый удобный) способ скопировать файл - это, вероятно, File.Copy.Есть ли причина, по которой вы его не используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...