Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Работа с файлами и директориями в Windows


Автор: Umnik 10.3.2008, 15:36
необходимо реализовать следующую программу (прошу лишь наметеить по возможности пути реализации, дальше сам разберусь):

прогарммма выполняет следующее:
1) ищет папку с заданным именем
2)создает тестовый файл (работа с файлом понятна)
3)сохраняет в него путь к папке, и имена всех файлов в ней содержащихся (вместе с их путями уже внутри данной папки) 

вот как реализовать 1 и 3 пункты подскажите пожалуйста!

Автор: korian 10.3.2008, 17:07
функции FindFirstFile, FindNextFile.
если с MFC, то класс CFileFind.

Автор: Dmi3ev 10.3.2008, 23:44
сейчас нет времени, а завтра накатаю небольшой пример!
уточни, искать файл надо в какой-то конкретной директории или по всему компу?
записывать все имена файлов, даже скрытых и файлов  ~dfm, например (ну ты понял о чем я)?

Добавлено через 1 минуту и 32 секунды
сори!
искать ПАПКУ надо по всему компу или в конкретном месте?

Автор: Umnik 10.3.2008, 23:53
ну посколько точного места нахождения не знаю, то по всему)

нет, скрытые необязательно!

Автор: Dmi3ev 11.3.2008, 00:43
раз тебе нужно наметить, слушай
можно так
сначала ищешь, допустим на D (как пример) 
Код

ffblk f;
int i=findfirst("имя папки", &f, FA_DIREC); 

если там нет, то надо сменить директорию, ищешь папочку на D
Код

ffblk d;
int i=findfirst("*", &d, FA_DIREC);

если имя папки не равно "." или ".." то берёшь их в расчет и начинаешь поиск в них, но уже с помощью findnext, например:
Код

i=findnext(&f); или i=findnext(&d);


чтобы переходить по папкам используй chdir("директория") параметр ".." поднимает на уровень вверх по-моему
обратиться к имени можно так f.ff_name
конечно нужно составить цикл пока (если i=0 то есть файлы и папки, иначе поиск закончить)
как-то вот так, удачи

Автор: Umnik 11.3.2008, 10:37
Вот что я намудрил  smile
Результат работы. Выводит все файлы с разришением и папки без в указанном каталоге (в моем примере C:\\)

Код

#include "stdafx.h"
#include "windows.h"
#include "stdlib.h"


int _tmain(int argc, _TCHAR* argv[])
{
WIN32_FIND_DATA data;
HANDLE handle = FindFirstFile(L"C:\\*.*", &data);
bool IsExit = (handle == INVALID_HANDLE_VALUE);
if(IsExit)
printf("Net directorii ili failov\n");
while ( !IsExit )
    {
    if ( lstrcmpi(data.cFileName, L".") && lstrcmpi(data.cFileName, L"..") )
        printf("%S\n", &(data.cFileName));

    IsExit = !FindNextFile( handle, &data );
    }
FindClose( handle );
system("pause");   
return 0;
}  


Да.... проблема на пробелеме. Он не видит папок/файлов с русскими именами... 


 ! 
archimed7592
Не забываем пользоваться кнопкой "Код" или тэгами [code=xxx][/code]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)