Устройства хранения, передача файлов и логика операций копирования - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь создать утилиту копирования файлов, которая должна работать вместо стандартного процесса копирования файлов Windows.Основная причина для этого - добавить поддержку очереди копирования / перемещения и, надеюсь, некоторую оптимизацию, разрешив множественную передачу файлов, только если передача файлов не будет включать один и тот же физический носитель назначения (вы знаете, как общая скорость передачи падает, когда естьнесколько передач происходит с одним и тем же носителем?)

Я хотел бы уточнить, что у меня практически не было опыта программирования в реальном мире.Я намерен использовать C # /. Net для проекта.

По сути, я намереваюсь создать нечто похожее по функциональности с теракопией (если не с тем же приростом производительности).

ВотВот несколько советов, которые мне нужны:

Как скорость копирования / перемещения файла зависит от носителя (жесткого диска, флэш-накопителя и т. д.)?

Скорость чтения / записи при операциях с одного жесткого диска на другой (например, при копировании файла с жесткого диска A на B, с A на A ).

Какого родаодновременные операции копирования / перемещения не будут существенно влиять друг на друга, если они выполняются одновременно (я не рассматриваю нагрузку на процессор или контроллер устройства ... или я должен? )?

Я признаю, что, возможно, у меня не было полной ясности в вопросах, поэтому, пожалуйста, дайте мне знать, если вам нужна дополнительная информация, чтобы иметь возможность дать ответ.

Спасибо.

1 Ответ

0 голосов
/ 02 июля 2011

Я думаю, что вы можете сделать это в C # , используя часть Win Api через внешние вызовы.Или, может быть, уже есть интерфейс для этого, о котором я не знаю (поскольку я сравнительно новичок в C #, использовав его только 2 месяца).Лично, однако, я бы сделал это в C / C ++ , используя Windows Api, если мне нужна производительность, или Python , если мне нужны хорошие функции и кроссплатформенная совместимость.Попробуйте найти библиотеку, которая обеспечивает кроссплатформенную совместимость и слой поверх стандартных функций win api.

Эта ссылка может оказаться полезной: http://msdn.microsoft.com/en-us/library/cc148994.aspx

Также, если вы этого не сделаетеслишком обеспокоены кроссплатформенной совместимостью есть ярлык , вы можете попробовать специфичные для ОС команды, такие как Batch , если вы используете окна, которые довольно просты, например, еслиВы хотите скопировать файл с именем foo из C: \ в D: \ просто выполните «Копировать C: \ Foo.txt D: \ Foo.txt» и все готово, вам не нужнобеспокоиться о USB-накопителях или жестких дисках, все, что вам нужно знать, это каталог для копирования.Вы можете получить доступ к этим командам, используя функцию "system ()" в C / C ++, я не знаю, что такое C Sharp equivelant.

...