Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
hotice
Зарегистрирован: 17.06.2003 Сообщения: 8 Откуда: Ставрополь
|
Добавлено: Пн Июл 16 2007 21:40 Заголовок сообщения: проход по каталогу на всю глубину |
|
|
нужен самый быстрый алгоритм прохлда покаталогу, исходные данные это начальный адрес, глубина максимальная. На выходе нужен фаил с полными адремсами ко всем подкаталогам и файлам с данными об их размере и дате последнего изменения. Подскажите плз что и где можно почитать. Не как не могу найти алгоритм.
Заранее спасибо. |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Ср Июл 18 2007 10:03 Заголовок сообщения: |
|
|
не знаю на счёт быстроты, но я делал так
Код: | void ScanDir(String dir)
{
TSearchRec SearchRec;
FindFirst(dir+"\\*.*", faAnyFile, SearchRec);
do
{
if(SearchRec.Size == 0 && SearchRec.Name.Length()>2 )
ScanDir(dir+"\\"+SearchRec.Name);
else
{
.....
};
}while (FindNext(SearchRec)==0);
FindClose(SearchRec);
};
int main(int argc, char* argv[])
{
.....
printf("Scaning & copying..\n");
ScanDir("c:");
...
|
_________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
hotice
Зарегистрирован: 17.06.2003 Сообщения: 8 Откуда: Ставрополь
|
Добавлено: Ср Июл 18 2007 16:38 Заголовок сообщения: |
|
|
Dimasm писал(а): | не знаю на счёт быстроты, но я делал так
Код: | void ScanDir(String dir)
{
TSearchRec SearchRec;
FindFirst(dir+"\\*.*", faAnyFile, SearchRec);
do
{
if(SearchRec.Size == 0 && SearchRec.Name.Length()>2 )
ScanDir(dir+"\\"+SearchRec.Name);
else
{
.....
};
}while (FindNext(SearchRec)==0);
FindClose(SearchRec);
};
int main(int argc, char* argv[])
{
.....
printf("Scaning & copying..\n");
ScanDir("c:");
...
|
|
как я понимаю это классическая рекурсивная реализация прохода по каталогу. Другой в нете я не встречал. А что это за структура . |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Чт Июл 19 2007 17:04 Заголовок сообщения: |
|
|
hotice писал(а): | как я понимаю это классическая рекурсивная реализация прохода по каталогу. Другой в нете я не встречал. А что это за структура . |
Ну а какой алгоритм ты ещё хотел увидеть? тут вариантов не много...
TSearchRec - структура специально для поиска файлов. юзаю C++Builder _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
hotice
Зарегистрирован: 17.06.2003 Сообщения: 8 Откуда: Ставрополь
|
Добавлено: Чт Июл 19 2007 17:27 Заголовок сообщения: |
|
|
Цитата: |
Ну а какой алгоритм ты ещё хотел увидеть? тут вариантов не много...
TSearchRec - структура специально для поиска файлов. юзаю C++Builder |
а можешь подсказать как этот код под VC++ переделатьа то он у меня на эту структуру ругается.
и скажи плз ты String из заголовочного <string> берёшь или какой другой юзаешь? |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Чт Июл 19 2007 18:22 Заголовок сообщения: |
|
|
из MSDN
WIN32_FIND_DATA
The WIN32_FIND_DATA structure describes a file found by the FindFirstFile, FindFirstFileEx, or FindNextFile function.
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
Поищи подробней
String У меня кажется в VCL... а у тебя MFC, надо там искать _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
hotice
Зарегистрирован: 17.06.2003 Сообщения: 8 Откуда: Ставрополь
|
Добавлено: Пт Июл 20 2007 20:01 Заголовок сообщения: |
|
|
Dimasm писал(а): | из MSDN
WIN32_FIND_DATA
The WIN32_FIND_DATA structure describes a file found by the FindFirstFile, FindFirstFileEx, or FindNextFile function.
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
Поищи подробней
String У меня кажется в VCL... а у тебя MFC, надо там искать |
спасибо, посмотрю |
|
Вернуться к началу |
|
|
|