Копирование файло, директорий и поддиректорий на C++ |
Здравствуйте, гость ( Вход | Регистрация )
Here You Can Support Our Work and .:LavTeaM:. Services |
Копирование файло, директорий и поддиректорий на C++ |
4.03.2003 - 18:15
Сообщение
#1
|
|
Группа: Пользователь №: Сообщений: 0 Регистрация: -- Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: раз(а) Рейтинг: < -10 ( ) 10 > |
Люди! Помогите!!! Как скопировать целую директорию с вложенными в нее попками и файлами на С++??? Функция IMAPISupport::CopyFolder не работает (хотя, может неадер какой я не добавил?). Работает только CopyFile, но она не копирует директории и все файлы по маске *.*
Помогите, pls!!! Спасибо. |
|
|
16.09.2003 - 20:22
Сообщение
#2
|
|
Новичок Группа: Пользователи Пользователь №: 738 Сообщений: 9 Регистрация: 10.04.2003 Из: St-Petersburg, Russia Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
Поможет выполнению этой задачи рекурсивная функция. Принцип следующий : копируем файлы и папки, причем когда встречаем папку - натравливаем на ее содержимое ту же функцию "изнутри".
Для копирования папок используем CreateDirectory. Копирование файлов из папки : используем поиск файлов (CFileFind), и каждый найденный файл копируем обычной функцией CopyFile. На ошибки не смотрим. Код void CopyFolder(CString strFrom, CString strTo) { //strFrom - имя папки, откуда копировать //strTo - имя папки, куда копировать //убедимся, что имена заканчиваются слэшем, если нет - добавим if (strTo.Right(1) != "") strTo += ''; if (strFrom.Right(1) != "") strFrom += ''; //создаем ("копируем") текущую папку CreateDirectory(strTo, NULL) != FALSE; //будем перебирать все файлы и папки в текущей CFileFind finder; CString strName = strFrom + "*.*"; BOOL bWorking = finder.FindFile(strName); while (bWorking) { bWorking = finder.FindNextFile(); CString strFilePath = finder.GetFilePath(); CString strFileTitle = finder.GetFileTitle(); //отсекаем "." и ".." if (!finder.IsDots()) { if (finder.IsDirectory()) //рекурсивное погружение в найденную папку (strTo + strFileTitle) CopyFolder(strFilePath, strTo + strFileTitle); else //просто копируем файл CopyFile(strFilePath, strTo + strFileTitle, false); } } finder.Close(); } PS IMAPISupport это совсем из другой области... |
|
|
Текстовая версия | Сейчас: 19.04.2024 - 07:04 |