Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Копирование файлов по сети

243
01 октября 2004 года
pacific_7
1.9K / / 06.09.2004
Как осуществить программно копирование файлов по сети из одной расшаренной папки в другую? Если можно, то пожалуйста с примером и комментариями.
294
01 октября 2004 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by pacific_7
Как осуществить программно копирование файлов по сети из одной расшаренной папки в другую? Если можно, то пожалуйста с примером и комментариями.


CopyFile("\\\\COMPUTER1\\SHAREDFOLDER1\\FILE.TXT", "\\\\COMPUTER2\\SHAREDFOLDER2\\FILE.TXT", FALSE);
Такой метод подойдёт?

Можно ещё помучать функцию CopyFileEx();

BOOL CopyFileEx(
LPCTSTR lpExistingFileName, // name of existing file
LPCTSTR lpNewFileName, // name of new file
LPPROGRESS_ROUTINE lpProgressRoutine, // callback function
LPVOID lpData, // callback parameter
LPBOOL pbCancel, // cancel status
DWORD dwCopyFlags // copy options
);

243
03 октября 2004 года
pacific_7
1.9K / / 06.09.2004
Честно говоря, не думал что CopyFile работает в сети! Спасибо, проверю. А вот насчет
LPPROGRESS_ROUTINE lpProgressRoutine, // callback function
LPVOID lpData, // callback parameter
и
DWORD dwCopyFlags // copy options
- можно как нибудь подробнее?
294
04 октября 2004 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by pacific_7
Честно говоря, не думал что CopyFile работает в сети! Спасибо, проверю. А вот насчет
LPPROGRESS_ROUTINE lpProgressRoutine, // callback function
LPVOID lpData, // callback parameter
и
DWORD dwCopyFlags // copy options
- можно как нибудь подробнее?


Согласно MSDN, [FONT=courier new]CopyFileEx()[/FONT] копирует файл "в новый файл" :), сохраняя при этом расширенные атрибуты файла-оригинала, структурированные OLE-хранилища (что это такое, я не знаю :)), альтернативные потоки NTFS. Security-атрибуты при этом не копируются. lpProgressRoutine -- указатель на функцию, которая будет вызываться функцией CopyFileEx() для отображения прогресс-индикатора, она должна иметь такой вид:
DWORD CALLBACK CopyProgressRoutine(
LARGE_INTEGER TotalFileSize, // file size
LARGE_INTEGER TotalBytesTransferred, // bytes transferred
LARGE_INTEGER StreamSize, // bytes in stream
LARGE_INTEGER StreamBytesTransferred, // bytes transferred for stream
DWORD dwStreamNumber, // current stream
DWORD dwCallbackReason, // callback reason
HANDLE hSourceFile, // handle to source file
HANDLE hDestinationFile, // handle to destination file
LPVOID lpData // from CopyFileEx
);
Коллбэк-параметр lpData, имеющий тип void*, просто передаётся функцией CopyFileEx в нашу CopyProgressRoutine(), т.е. мы можем его использовать для передачи указателя на какую-нибудь нашу хитрую структуру, если такое нам потребуется.
dwCopyFlags -- это как нам копировать, может представлятькомбинацию из следующих констант:
COPY_FILE_FAIL_IF_EXISTS --понятно, если файл уже существует, то облом;
COPY_FILE_RESTARTABLE -- типа, если произошёл сбой, вызванная в следующий раз CopyFileEx с теми же параметрами lpExistingFileName и lpNewFileName по усмотрению системы может копироваться не с начала, а с того места, где произошёл облом.

243
06 октября 2004 года
pacific_7
1.9K / / 06.09.2004
Пребольшое спасибо!!! Как раз то, что нужно! Завтра проверю на практике.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог