Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17

Найти папку, а в ней файлы

11.06.2017, 10:23. Показов 8089. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые друзья)
- Возник довольно таки серьезный вопрос

В общем, столкнулся с проблемой...
Перепробовал более чем 4-е метода, которые вспомнил у себя в голове... Ну не то...

В общем...

Суть:

По нажатию на Кнопку мне нужно сделать функцию.

Функция: Найти папку "Cleo", а в ней отобразить все файлы с расширением "*.cs".
- При этом "Местоположение папки "CLEO" не известно, даже не известно на каком диске она находится "C" или "D".

Поэтому мне нужно выполнить поиск папки "Cleo" на дисках "C" и "D", если данная папка находится - в ней уже находим файлы с расширением "*.cs" и пересылаем их как пример в "listbox"...

Ну это лишь пример, ну суть думаю ясна...
Пожалуйста, жду ответа))
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.06.2017, 10:23
Ответы с готовыми решениями:

Как удалить папку и все файлы в ней?
Проблема в том, что папка удаляется только в том случае, если она пуста. А вот если в ней файл, то нет. Подскажите как удалить папку и все...

Как открыть новую папку в папке и в ней все файлы?
Привет всем! Такое дело: каждый день у меня в папке появляется новая папка с файлами. Имя папки как дата, например 17082005. Мне нужно,...

При нажатии на кнопку удалять папку (директорию) и все файлы в ней
Помогите пожалуйста, мне нужно нажатием на кнопку удалять элемент из листбокса, а так же папку, название которой соответствует названию...

34
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.06.2017, 10:35
Rastaman03Rus, Рекурсивный поиск каталогов с помощью C#
1
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
11.06.2017, 10:47  [ТС]
Это всё понятно, как я уже сказал - 4 метода использовал.
Попробуй кодом сам расписать мою мысль.
C#
По теме: Благодарю за ответ

Добавлено через 3 минуты
ПС, Напомню...

Диск данной папки то-же не известен...
Он может быть как "C" так и "D".

Нужен пример кто может сделать данное решение проблемы.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.06.2017, 10:55
Цитата Сообщение от Rastaman03Rus Посмотреть сообщение
как я уже сказал - 4 метода использовал
Было бы интересно посмотреть на эти методы и Вашу реализацию.
Цитата Сообщение от Rastaman03Rus Посмотреть сообщение
Это всё понятно
Так а что не понятно то?
Цитата Сообщение от Rastaman03Rus Посмотреть сообщение
Попробуй кодом сам расписать мою мысль.
Не, сейчас лень! Хотя, проблем никаких не вижу.
Цитата Сообщение от Rastaman03Rus Посмотреть сообщение
Диск данной папки то-же не известен...
Он может быть как "C" так и "D".
Проблема в этом чтоль? Получаете список дисков при помощи:
C#
1
DriveInfo[] drives = DriveInfo.GetDrives();
А дальше используйте поиск по каждому из них, как указано в статье по ссылке, которую я в прошлом посте давал.
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
11.06.2017, 11:20  [ТС]
Дружище, в целом - множественное написание кода тут не присутствует.
Поэтому, не ленись) Будь так добр - распиши полностью "Кодом".
Суть данной проблемы... Ибо мой мозг уже помешан на этой теме и конкретно отказывается варить))
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
11.06.2017, 11:39
Rastaman03Rus, сейчас точно не получится, ибо уже ухожу. Возможно, вечером сделаю.
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
11.06.2017, 11:46  [ТС]
Отлично, ожидаю твоего возвращения)
Будь так добр - окажи помощь и воплоти сия код в реальность "C#"
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18287 / 14210 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
11.06.2017, 21:55
Rastaman03Rus, как вариант (возможно не сильно эффективный из-за применения PathMatchSpec). Функция GetCSharpFiles возвращает список искомых файлов с которым уже можно делать что угодно. Я исходил из того что папка нужна только одна и что поиск нужно делать только на локальных жестких дисках.

C#
1
2
3
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
C#
1
2
3
4
5
6
7
8
9
10
11
12
string[] GetCSharpFiles()
{
    foreach (var driveInfo in DriveInfo.GetDrives().Where(di => di.DriveType == DriveType.Fixed))
    {
        var dirs = SafeEnumerateDirectories(driveInfo.Name, "CLEO", SearchOption.AllDirectories).ToArray();
        if (dirs.Length == 1)
        {
            return Directory.GetFiles(dirs[0], "*.cs");         
        }
    }
    return new string[0];
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[DllImport("shlwapi.dll", CharSet=CharSet.Auto)]
static extern bool PathMatchSpec([In] string pszFile, [In] string pszSpec);
 
private static IEnumerable<string> SafeEnumerateDirectories(string path, string searchPattern = "*.*", SearchOption searchOption = SearchOption.TopDirectoryOnly)
{
    Stack<string> dirs = new Stack<string>();
    dirs.Push(path);
    do
    {
        string[] subDirs = null;
        try
        {
            string currentDirPath = dirs.Pop();
            subDirs = Directory.GetDirectories(currentDirPath);
        }
        catch (UnauthorizedAccessException) { continue; }
        catch (DirectoryNotFoundException) { continue; }
 
        foreach (string subDirPath in subDirs)
        {
            dirs.Push(subDirPath);
            if (PathMatchSpec(Path.GetFileName(subDirPath), searchPattern))
            {
                yield return subDirPath;
            }
        }
    } while (dirs.Count > 0 && searchOption == SearchOption.AllDirectories);
}
0
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 19
12.06.2017, 00:16
это выглядит прекрасно и совершенно непонятно. Раздел для новичков, разве нет решения корявее, но понятнее?)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18287 / 14210 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
12.06.2017, 01:01
rwSpace, новичок может пользоваться готовым решением не вдаваясь в подробности внутреннего устройства или, что предпочтительнее, задать вопросы по непонятным моментам.
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
13.06.2017, 07:39  [ТС]
Пс, в целом всё сделал и вставил...
Нооо, есть одно но... не могу сделать отображение в "listbotx".

Нужно отображение всех найденых файлов "*.cs" в "listbox"
0
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 19
13.06.2017, 10:13
C#
1
2
3
4
5
foreach(FileInfo file in directory.getFiles())
{
    if(file.Name.EndsWith(".cs"))
        this.listbox.Items.Add(file.Name);
}
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
13.06.2017, 10:23  [ТС]
Ошибка 1 Ни одна из перегрузок метода "GetFiles" не принимает "0" аргументов C:\Users\pc\Documents\Visual Studio 2010\Projects\GTAACTEST\GTAACTEST\Form1. cs 136 39 GTAACTEST

Данный код пустил на кнопку
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18287 / 14210 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
13.06.2017, 12:30
Цитата Сообщение от Rastaman03Rus Посмотреть сообщение
Нужно отображение всех найденых файлов "*.cs" в "listbox"
Берем код из предыдущего сообщения и добавляем следующий код
C#
1
2
3
4
foreach (string path in GetCSharpFiles())
{
    listbox.Items.Add(path);
}
Цитата Сообщение от rwSpace Посмотреть сообщение
C#
1
2
3
foreach(FileInfo file in directory.getFiles())
{
    if(file.Name.EndsWith(".cs"))
Искать файлы с нужным расширением эффективнее путем передачи шаблона имени - directory.GetFiles("*.cs") - так мы сразу получим искомые файлы.
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
14.06.2017, 11:31  [ТС]
То что было в предложенном сообщении выше - вставил.

Это (Кинул на кнопку):

C#
1
2
3
4
foreach (string path in GetCSharpFiles())
{
    listBox3.Items.Add(path);
}
Итог - он ничего не отображает в лист боксе...
Провисает на пару минут и всё
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18287 / 14210 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
14.06.2017, 11:51
Rastaman03Rus, значит на дисках нет папки CLEO с *.cs файлами.
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
14.06.2017, 13:57  [ТС]
Есть это точно) Это прям инфа сотка))
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18287 / 14210 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
14.06.2017, 14:08
Rastaman03Rus, возможны и другие варианты - папок несколько (а метод GetCSharpFiles исходит из того она должна быть одна) или она (они) находятся на не локальных жестких дисках. В любом случае воспользуйся отладичком чтобы посмотреть что происходит во время работы GetCSharpFiles().
0
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17
15.06.2017, 09:06  [ТС]
subDirs = Directory.GetDirectories(currentDirPath) ; - стек вызова стопорится на нем как я понимаю.

А так-же делает "Исключения" - "Отказ в доступе" - Windows/system32 & ProgrammData/...

Может в Вк или куда еще добавишь?)
- Поможешь в талого чтоб нормальное было отображение...

Сам попробуй запусти сия скрипт, чтоб он нашел папку CLEO.

Суть программы:
- Сделал лаунчер.
- Теперь нужно чтоб когда чел открывает лаунчер для запуска нашего сервера - его ПК автоматом проверял на наличие читов с расширением "*.cs" в папке "CLEO" - GTA:SA.
- После чего данные пойдут в определенное окно - Администрации сервера) ( Там уже своя задумка ).

Так-вот, не могу сделать чтоб нормально выводило файлы "*.cs" из папки "CLEO".
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18287 / 14210 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
15.06.2017, 14:06
Лучший ответ Сообщение было отмечено Rastaman03Rus как решение

Решение

Rastaman03Rus, у меня код работает, находит папку CLEO и *.cs файлы в ней. Поиск файлов делается только в самой папке CLEO. Возможно тебе нужно проверять и вложенные папки? Если так, то замени
C#
1
return Directory.GetFiles(dirs[0], "*.cs");
на
C#
1
return Directory.GetFiles(dirs[0], "*.cs", SearchOption.AllDirectories);
Также можно исправить код на случай если папок с именем CLEO найдено несколько.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
string[] GetCSharpFiles()
{
    var csharpFiles = new List<string>();
    foreach (var driveInfo in DriveInfo.GetDrives().Where(di => di.DriveType == DriveType.Fixed))
    {
        var dirs = SafeEnumerateDirectories(driveInfo.Name, "CLEO", SearchOption.AllDirectories).ToArray();
        foreach (string dir in dirs)
        {
            csharpFiles.AddRange(Directory.GetFiles(dirs[0], "*.cs", SearchOption.AllDirectories));
        }
    }
    return csharpFiles.ToArray();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2017, 14:06
Помогаю со студенческими работами здесь

Сделать единственную скрытую папку на флешке, с возможностью редактировать в ней файлы
Нужно сделать так, чтобы на флешке была лишь одна папка, в которой можно было б редактировать файлы. Её скрыть. Это реально сделать?

Как найти нужную расшаренную папку и получить к ней полый доступ
Как найти нужную расшаренную папку и получить к ней полный доступ

Как найти все папки и файлы в ней
как сделать чтобы найти все папки и файлы и вывести на экран Memo1-&gt;Lines-&gt;Add(***) ; c:\new показать все что есть в этой папки пример ...

Выбрать случайную папку, скопировать из неё все файлы и перенести в другую папку
Добрый день! Прошу помощи в написании батника. Имеется папка A с неким количеством других папок. Требуется из этой папки выбрать...

Выбрать случайную папку, скопировать из неё все файлы и перенести в другую папку
Добрый день! Прошу помощи в написании скрипта. Имеется папка A с неким количеством других папок. Требуется из этой папки выбрать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru