URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2443
[ Назад ]

Исходное сообщение
"catalogies"

Отправлено yak , 08-Янв-04 10:17 
Pomogite s takim voprosom - kto mozet
Kak v LINUXe-C++ rabotat s katalogami - kak poluchit spisok failov v kataloge

Содержание

Сообщения в этом обсуждении
"catalogies"
Отправлено Shrike , 08-Янв-04 14:09 
Пример работы с католгоами  отправил на почту

"catalogies"
Отправлено Vir , 14-Янв-04 15:58 
>Пример работы с католгоами  отправил на почту

Меня тоже интересует этот пример, поделитесь?


"catalogies"
Отправлено xhook , 14-Янв-04 18:16 
>>Пример работы с католгоами  отправил на почту
>
>Меня тоже интересует этот пример, поделитесь?

Присоединяюсь ... :)
Не могли бы вы этот примерчик выложить сдесь на форуме?


"catalogies"
Отправлено ChiP , 15-Янв-04 00:11 
>>>Пример работы с католгоами  отправил на почту
>>
>>Меня тоже интересует этот пример, поделитесь?
>
>Присоединяюсь ... :)
>Не могли бы вы этот примерчик выложить сдесь на форуме?

#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;
}


"catalogies"
Отправлено Vir , 15-Янв-04 03:00 
Спасибо, только одной мелочи не достает - как понять что из спика файлы а что папки?
Точнее было бы еще лучше если можно было просматривать содержимое папки на наличие файлов с заднными арибутами, мея итересует момент когда мне нужны либо только папки либо только файлы.

Чесно говоря может немного провожу аналогию с видами, но подобие findfirst findnext меня бы устроило во всех отношениях........


"catalogies"
Отправлено ChiP , 15-Янв-04 12:19 
>Спасибо, только одной мелочи не достает - как понять что из спика
>файлы а что папки?

#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);

зы: если есть еще вопросы пиши на майл



"catalogies"
Отправлено solov , 14-Янв-04 19:26 
Я не знаю, что за дока была на мыло послана, но может быть эта информация тоже будет полезна.
Главные три функции:

#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


"catalogies"
Отправлено yak , 15-Янв-04 22:34 
Спасибо огромное за все ответы
Все отлично работает, правда полностью все не проверял - свой ЛИНУХ все настраиваю да настраиваю

>Я не знаю, что за дока была на мыло послана, но может
>быть эта информация тоже будет полезна.
>Главные три функции:
>
>#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