0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 17

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

11.06.2017, 10:23. Показов 8206. Ответов 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
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
18311 / 14235 / 5368
Регистрация: 17.03.2014
Сообщений: 28,905
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru