Pomogite s takim voprosom - kto mozet
Kak v LINUXe-C++ rabotat s katalogami - kak poluchit spisok failov v kataloge
Пример работы с католгоами отправил на почту
>Пример работы с католгоами отправил на почтуМеня тоже интересует этот пример, поделитесь?
>>Пример работы с католгоами отправил на почту
>
>Меня тоже интересует этот пример, поделитесь?Присоединяюсь ... :)
Не могли бы вы этот примерчик выложить сдесь на форуме?
>>>Пример работы с католгоами отправил на почту
>>
>>Меня тоже интересует этот пример, поделитесь?
>
>Присоединяюсь ... :)
>Не могли бы вы этот примерчик выложить сдесь на форуме?#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>#define PATH "/"
int
main(int argc, char *argv[])
{
DIR *DIRp;
struct dirent *dirp;if (NULL == (DIRp = opendir(PATH)))
{
exit(EXIT_FAILURE);
}
while (dirp = readdir(DIRp))
{
fprintf(stderr, "%s\n", dirp->d_name);
}
closedir(DIRp);return 0;
}
Спасибо, только одной мелочи не достает - как понять что из спика файлы а что папки?
Точнее было бы еще лучше если можно было просматривать содержимое папки на наличие файлов с заднными арибутами, мея итересует момент когда мне нужны либо только папки либо только файлы.Чесно говоря может немного провожу аналогию с видами, но подобие findfirst findnext меня бы устроило во всех отношениях........
>Спасибо, только одной мелочи не достает - как понять что из спика
>файлы а что папки?#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>#define PATH "/etc/"
int
main(int argc, char *argv[])
{
DIR *DIRp;
struct dirent *dirp;if (NULL == (DIRp = opendir(PATH)))
{
exit(EXIT_FAILURE);
}
while (dirp = readdir(DIRp))
{
char entry[FILENAME_MAX + 1] = { 0 };
struct stat st = { 0 };
strncpy(entry, PATH, strlen(PATH));
strncpy(entry + strlen(PATH), dirp->d_name, strlen(dirp->d_name) + 1);
lstat(entry, &st);
if (S_ISDIR(st.st_mode))
{
fprintf(stderr, "Directory %s\n", entry);
} else if (S_ISREG(st.st_mode)) {
fprintf(stderr, "Regular file %s\n", entry);
} else {
fprintf(stderr, "Something else, see stat(2) for more info: %s\n", entry);
}
}
closedir(DIRp);return 0;
}
>Точнее было бы еще лучше если можно было просматривать содержимое папки на
>наличие файлов с заднными арибутами, мея итересует момент когда мне нужны
>либо только папки либо только файлы.
>
>Чесно говоря может немного провожу аналогию с видами, но подобие findfirst findnext
>меня бы устроило во всех отношениях........man fts
man ftw (для linux'a);зы: если есть еще вопросы пиши на майл
Я не знаю, что за дока была на мыло послана, но может быть эта информация тоже будет полезна.
Главные три функции:#include <sys/types.h>
#include <dirent.h>DIR *opendir(const char *name); // открыть
struct dirent *readdir(DIR *dirp);
dirent->d_ino // инод файла
dirent->d_name // имя файла
int closedir(DIR *dirp); // закрытьа еще можно использовать Qt класс QDir
хорошо все описанно
http://doc.trolltech.com/3.3/qdir.html
Спасибо огромное за все ответы
Все отлично работает, правда полностью все не проверял - свой ЛИНУХ все настраиваю да настраиваю>Я не знаю, что за дока была на мыло послана, но может
>быть эта информация тоже будет полезна.
>Главные три функции:
>
>#include <sys/types.h>
>#include <dirent.h>
>
>DIR *opendir(const char *name); // открыть
>struct dirent *readdir(DIR *dirp);
> dirent->d_ino // инод файла
> dirent->d_name // имя файла
>int closedir(DIR *dirp); // закрыть
>
>а еще можно использовать Qt класс QDir
>хорошо все описанно
>http://doc.trolltech.com/3.3/qdir.html