Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 55, средняя оценка - 4.82
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
#1

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

17.08.2009, 08:57. Просмотров 7334. Ответов 14
Метки нет (Все метки)

Киньте пример на "чистом" C++ чтения директории.
Т.е. надо прочесть директорию, записать все имена файлов и поддиректорий в массив записей. Запись состоит из двух полей - строка с именем и поле с флагами.

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

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

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2009, 08:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение директории (C++):

Чтение списка файлов из директории, их открытие и обработка - C++
Доброго времени суток! Написал программу, которая будет открывать нужную папку, считывать все файлы из нее (все имеют формат .txt и потом...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

Директории - C++
Люди подскажите аналоги sys/types.h и sys/stat.h в с++

Файлы в директории. - C++
Задача такова: Есть .exe программы. Лежит в папке. Нужна функция которая создаст массив или список имён файлов находящихся в данной...

Копирование директории - C++
Как реализовать полное копирование директории на freeBSD (Не используя библиотек Microsoft)? Какой наиболее оптимальный алгоритм для...

Листинг директории - C++
Здравствуйте! Начал изучать С++. Хочу написать консольную программу в среде Visual C++ 2008 вывода содержимого текущей директории. Из...

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

http://msdn.microsoft.com/en-us/library/aa365200(VS.85).aspx

там ещё много всякой инфы в окрестностях
главное:
отличать - через флажок
читать список через find какой-то
0
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
);
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.08.2009, 12:26 #7
Файлы отличаются от директорий таким образом
C++
1
if(dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
где dwFileAttributes это поле в структуре WIN32_FIND_DATA

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

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

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

Добавлено через 1 минуту 30 секунд
Кстати и под Windows эти функции по идее должны быть тоже.
0
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.
Ну, в общем меня уже направили на путь ...
0
17.08.2009, 17:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2009, 17:55
Привет! Вот еще темы с ответами:

Удаление непустой директории - C++
Здравствуйте. Подскажите, как удалить непустую директорию? Обязательно ли заморачиваться с предварительным удалением файлов из неё?

Поиск файлов в директории - C++
Интересно, как можно реализовать вывод всех файлов, которые есть в данной директории? Например, одного формата? Ибо сейчас, при...

Прописывания директории в fopen - C++
Как правильно использовать ? Я пишу FILE *infile = fopen("C:\1.txt", "w"); не работает

Отсутствие файла директории - C++
Всем привет, пытаюсь научиться программировать в с++. Такая беда на первом задание. Исходный текст: #include "stdafx.h" #include...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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