Kats2512 Ответов: 2

Каков самый надежный способ копирования нескольких файлов между источником и местом назначения?


Привет,

В настоящее время я нахожусь в процессе создания процесса копирования файлов для тысяч файлов за один раз. Я хочу знать, есть ли какая-либо библиотека .net, которая помогла бы мне выполнить эту задачу с наименьшим количеством времени ожидания.

2 Ответов

Рейтинг:
13

Sergey Alexandrovich Kryukov

Я не думаю, что тебе нужно что-то, кроме System.IO.File.Copy Я не знаю, как вам нужно определить набор файлов для копирования, но вы могли бы использовать его System.IO.Directory На практике, особенно для приложений пользовательского интерфейса, вам нужно будет использовать отдельный поток для таких операций.

—СА


Рейтинг:
1

pdoxtader

Я потратил на это некоторое время. Не бойтесь использовать несколько потоков для ваших операций копирования, даже если вы найдете некоторые источники, которые утверждают, что это не быстрее. Это неправда - вы только посмотрите Команды Robocopy.

На самом деле, Робокопия может быть вашим единственным решением.

-Пит


Philippe Mori

Слишком большая многопоточность может окончательно убить производительность, так как головки дисков будут двигаться больше. Это относительно легко увидеть, даже просто используя Проводник Windows и запустив кучу копий, использующих одни и те же диски.

pdoxtader

Вы когда-нибудь писали приложение для копирования файлов, чтобы проверить это самостоятельно? Не доверяйте собственному приложению microsoft. Вы не знаете, что они делают, кроме копирования байтов из одного места в другое. сделать это самостоятельно.

У меня есть, и я смог увидеть преимущество в производительности при копировании сразу 500 файлов. К моему удивлению, я обнаружил, что реальная задержка в копировании файлов не была связана с чтением, а затем записью байтов - это само создание файла (для небольших файлов - это удивительно сложная тема).

Не принимайте только то, что вы видите с помощью утилит Microsoft (или на MSDN), как итог. Сделать это самостоятельно. Проверьте это сами.

-Пит