C # / CopyFile: кроссплатформенный код с Progress - PullRequest
0 голосов
/ 28 мая 2010

Пожалуйста, предложите мне кроссплатформенное решение C # для копирования файла с прогрессом. Метод должен иметь возможность копировать файл в Mono, а также в .NET.

P.S. Большинство решений здесь относится к CopyFileEx (который использует PInvoked, и я не уверен, будет ли это работать на Mono)

Ответы [ 3 ]

4 голосов
/ 28 мая 2010

Вы можете вручную копировать между файловыми потоками, например, методом CopyFile в Средстве развертывания файлов MonoDevelop , которое имеет обратный вызов после каждого фрагмента 1 КБ.

Возможно, это немного медленнее, чем File.Copy, но если обратные вызовы прогресса необходимы, у вас нет большого выбора.В случае файлового копира MonoDevelop, мы пишем в локально смонтированные удаленные файловые системы через FUSE.

0 голосов
/ 24 марта 2012

StreamWriter должно работать :),

Загрузка данных в память через StreamReader? И запись их через StreamWriter или BinaryWriter. и есть даже AsyncWrite, если вы хотите:)

У меня есть пользовательский формат архива, который работает на Mono с использованием этих API, упомянутых выше. не должно отличаться для вас.

0 голосов
/ 28 мая 2010

Вы пробовали метод File.Copy? У меня нет опыта работы с моно, но думаю, что оно должно работать. Вам придется беспокоиться о путях к файлам, которые отличаются от API.

...