Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222

Поиск всех файлов в папке и вывод их имен

24.03.2014, 23:07. Показов 7061. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь сделать программку, которая будет выводить название всех файлов формата .txt в определенной папке, но что-то не могу разобраться с FindFirstFile / FindNextFile и в интернете подробно ничего как-то не описывается. Может у кого-нибудь есть материал по этой теме, хочется разобраться.

Добавлено через 1 минуту
P.S забыл написать, что надо для Visual Studio
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.03.2014, 23:07
Ответы с готовыми решениями:

Поиск имен всех файлов, находящихся в определенной папке
Народ как записать (например в Memo) имена всех файлов, находящихся в определеннои папке??

Вывод имен файлов в папке
Нужно вывести на экран имена всех фалов , но вместо этого выводит адреса #include "windows.h" ...

Получение всех имен файлов в папке и во вложенных подпапках
public partial class Form1 : Form { public Form1() { InitializeComponent(); } ...

9
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
24.03.2014, 23:11
Цитата Сообщение от Blueeyer Посмотреть сообщение
что-то не могу разобраться с FindFirstFile / FindNextFile и в интернете подробно ничего как-то не описывается.
Неправда !
Первая ссылка в Гугле ведет на сайт MSDN, а там ссылка на
пример использования. Как-то даже неудобно копировать сюда,
настолько легко ищется...
0
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
24.03.2014, 23:28  [ТС]
да, я смотрел это, но особо ничего не понял хотелось бы что-то на русском и с примерами различных коротеньких программок
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
24.03.2014, 23:34
Попробуйте тогда поиск по Киберфоруму.
0
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
25.03.2014, 00:01  [ТС]
Начал разбираться с этой темой, однако возникло несколько проблем.
1) c:\users\anton\documents\visual studio 2010\projects\findfirst\findfirst\main.c pp(11): error C2664: 'FindFirstFileW' : cannot convert parameter 1 from 'const char [7]' to 'LPCWSTR'

- если в настройках поменять Use Unicode Character Set на Not Selected - тогда работает.
В чем дело и не возникнет ли дополнительных проблем,если я оставлю Not Selected?

2) При запуске программы вместо названий картинок выводится куча таких символов: MMMMMMMMMMMMMMMMMMMMM
- Однако, если найти эту программку в папке Debug, в проектах, и запустить её - она нормально выводит названия всех картинок. Как с этим бороться?

Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <windows.h> 
#include <iostream> 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    WIN32_FIND_DATA findImg;
// Нахождение самого первого файла
    HANDLE hFind = FindFirstFile("*.jpg", &findImg);
    cout << findImg.cFileName << endl;
// Поиск других файлов
    while (FindNextFile(hFind, &findImg)){
        cout << findImg.cFileName << endl;
    }
// Закрыть потом файла
    FindClose(hFind);
 
    system("PAUSE");
    return 0;
}
0
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
25.03.2014, 00:03  [ТС]
https://www.cyberforum.ru/atta... 1395691358
Миниатюры
Поиск всех файлов в папке и вывод их имен  
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
25.03.2014, 00:06
Лучший ответ Сообщение было отмечено Blueeyer как решение

Решение

Цитата Сообщение от Blueeyer Посмотреть сообщение
если в настройках поменять Use Unicode Character Set на Not Selected - тогда работает.
В чем дело и не возникнет ли дополнительных проблем,если я оставлю Not Selected?
Возникнет. Обязательно возникнет, как только Вы начнете запускать
свое приложение на других локализациях Windows, либо работать с
символами из других, не латинских алфавитов. Лучше оставляйте
везде Юникод и используйте "широкие" строки - wstring, wchar_t,
LPWSTR, FindFirstFileW, WIN32_FIND_DATAW и т.д.

Цитата Сообщение от Blueeyer Посмотреть сообщение
2) При запуске программы вместо названий картинок выводится куча таких символов: [][][][][][][][][][][]
- Однако, если найти эту программку в папке Debug, в проектах, и запустить её - она нормально выводит названия всех картинок. Как с этим бороться?
Это особенности работы Виндовой консоли.
В общем случае они вообще не решаются.
Но для частных случаев есть хорошие рецепты:
Русские шрифты в консоли

Добавлено через 1 минуту
Цитата Сообщение от Blueeyer Посмотреть сообщение
C++
1
2
HANDLE hFind = FindFirstFile("*.jpg", &findImg);
cout << findImg.cFileName << endl;
А где проверка ошибок ?
Если в FindFirstFile не задать путь, она будет искать в текущей папке.
А это может быть вовсе не та папка, где находится exe.
В общем, всегда проверяйте возвращаемые значения (и еще
GetLastError может помочь).
1
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
25.03.2014, 00:21  [ТС]
Большое спасибо за помощь! А можно маленький примерчик с GetLastError?

Добавлено через 9 минут
И как сделать, чтоб выбивало ошибку, если не найден ни один файл данного типа?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
25.03.2014, 09:23
Лучший ответ Сообщение было отмечено Blueeyer как решение

Решение

Цитата Сообщение от Blueeyer Посмотреть сообщение
Большое спасибо за помощь! А можно маленький примерчик с GetLastError?
Ну например, FindFirstFile в случае ошибки возвращает INVALID_HANDLE_VALUE.
Но как узнать, что это была за ошибка ? Вот тут и нужен вызов GetLastError.
По документации, если файл не найден, last error будет равным ERROR_FILE_NOT_FOUND.
А в случае какой другой ошибки код тоже будет другим (например, ERROR_ACCESS_DENIED в
случае отсутствия доступа к нужной директории).
1
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
25.03.2014, 12:37  [ТС]
Огромное спасибо Вам! Очень помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2014, 12:37
Помогаю со студенческими работами здесь

Вывод имен файлов которые есть в папке, но нет в базе данных!
Написал кнопку которая выводит количество файлов в папке, количество файлов в базе, и выводит имена тех файлов которые есть в папке но нет...

Вывод всех файлов в папке
Здравствуйте, есть скрипт, в папке с ним есть еще 1 папка lists, из нее нужно вывести все файлы, делаю так: $dir =...

Вывод всех файлов в папке
Подскажите, пожалуйста, как вывести на страницу имена всех файлов в папке

Поиск всех файлов .txt в нужной папке
Здравствуйте! Нужна помощь! Мне нужно добавить в ListBox1 названия всех файлов txt и чтобы при двойном клике открывало их в Memo1. Как...

Вывод на экран имен всех файлов с указанным расширением
Вывод на экран имен всех файлов с указанным расширением, находящихся в каталоге, имя которого задается при запуске командного файла первым...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru