Форум программистов, компьютерный форум CyberForum.ru

Чтение директории - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.82
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
17.08.2009, 08:57     Чтение директории #1
Киньте пример на "чистом" C++ чтения директории.
Т.е. надо прочесть директорию, записать все имена файлов и поддиректорий в массив записей. Запись состоит из двух полей - строка с именем и поле с флагами.

Ключевая проблема - как отличать файлы от директорий.

Ну и до кучи - отличить файл от устройства, прочитать атрибуты/права, владельца и т.п.

Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
17.08.2009, 09:48     Чтение директории #2
http://www.cyberforum.ru/win-api/thr...tml#post236915
Исходник моего командера, там всё найдёшь...
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
17.08.2009, 10:58  [ТС]     Чтение директории #3
Цитата Сообщение от zim22 Посмотреть сообщение
skvor, открой для себя 7-Zip
Да вот он чёт не все RAR-ы берёт..., скажем так - "очень редко".
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
17.08.2009, 11:23     Чтение директории #4
Цитата Сообщение от skvor Посмотреть сообщение
Да вот он чёт не все RAR-ы берёт...,
в GCC баги, 7-zip плохо работает. паранойя?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.08.2009, 11:36     Чтение директории #5
Ключевая проблема - как отличать файлы от директорий.
http://msdn.microsoft.com/en-us/libr...30(VS.85).aspx

http://msdn.microsoft.com/en-us/libr...00(VS.85).aspx

там ещё много всякой инфы в окрестностях
главное:
отличать - через флажок
читать список через find какой-то
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
17.08.2009, 12:20  [ТС]     Чтение директории #6
Спасибо, но это как-то хреново похоже на "чистый" C++
C++
1
2
3
4
HANDLE WINAPI FindFirstFile(
  __in   LPCTSTR lpFileName,
  __out  LPWIN32_FIND_DATA lpFindFileData
);
-=ЮрА=-
Заблокирован
Автор FAQ
17.08.2009, 12:26     Чтение директории #7
Файлы отличаются от директорий таким образом
C++
1
if(dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
где dwFileAttributes это поле в структуре WIN32_FIND_DATA

Функции поиска фалов FindFirstFile, FindNextFile...
А вот исходник в zip-e
Вложения
Тип файла: zip fexpl_3.0_zip.zip (26.5 Кб, 96 просмотров)
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
17.08.2009, 13:00     Чтение директории #8
привыкайте работать с первоисточниками:

http://msdn.microsoft.com/en-us/libr...00(VS.85).aspx
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
17.08.2009, 13:09  [ТС]     Чтение директории #9
Всем спасибо, но обращаю ещё раз на "чистый" C++.
Т.е. мне нужен пример только на стандартных библиотеках, а НЕ под Виндуз
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
17.08.2009, 13:18     Чтение директории #10
Цитата Сообщение от skvor Посмотреть сообщение
Т.е. мне нужен пример только на стандартных библиотеках,
стандартные библиотеки не умеют работать с директориями. они обращаются к API операционной системы. можешь boost.filesystem использовать.
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
17.08.2009, 13:46  [ТС]     Чтение директории #11
Цитата Сообщение от zim22 Посмотреть сообщение
стандартные библиотеки не умеют работать с директориями.
спасибо, вот я обламался
А есть "нестандартные" библиотеки для *nix-ов/POSIX, что б с директориями работать как с потоками?
А то как-то нелогично - с файлами работать через C++, а для директорий - как Неандертальцы на C.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
17.08.2009, 13:56     Чтение директории #12
Цитата Сообщение от skvor Посмотреть сообщение
А есть "нестандартные" библиотеки
boost.filesystem
он инкапсулирует обращения к API OC.
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
17.08.2009, 14:39  [ТС]     Чтение директории #13
Цитата Сообщение от zim22 Посмотреть сообщение
boost.filesystem
- спасибо
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
17.08.2009, 17:41     Чтение директории #14
с файлами работать через C++
Это всего лишь обертка поверх функций C, которые в свою очередь являются вызовами syscall-ов ОС.
для директорий - как Неандертальцы на C
Никто не сделал стандартной обертки на C++, есть только стандартная из C.

Для UNIX посмотри функции opendir, readdir, readdir_r, telldir, seekdir, rewinddir, closedir.

Добавлено через 1 минуту 30 секунд
Кстати и под Windows эти функции по идее должны быть тоже.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2009, 17:55     Чтение директории
Еще ссылки по теме:

Отсутствие файла директории C++
C++ Определение текущей директории
C++ Копирование директории
C++ Удаление непустой директории
C++ Чтение списка файлов из директории, их открытие и обработка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
17.08.2009, 17:55  [ТС]     Чтение директории #15
Цитата Сообщение от odip Посмотреть сообщение
Для UNIX посмотри функции opendir, readdir, readdir_r, telldir, seekdir, rewinddir, closedir.
Таки в том и дело, что это C.
Ну, в общем меня уже направили на путь ...
Yandex
Объявления
17.08.2009, 17:55     Чтение директории
Ответ Создать тему
Опции темы

Текущее время: 08:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru