Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
210 / 207 / 146
Регистрация: 20.11.2014
Сообщений: 1,161
1

Список папок и вложенных файлов

19.11.2016, 20:53. Показов 2756. Ответов 3
Метки нет (Все метки)

имеется одна корневая папка, в ней список папок, имя каждой папки это дата, например 19.11.2016. В каждой папке имеется список файлов. В дальнейшем нужно будет это занести в таблицу(html) в виде дата создания-имя. Делаю так
C#
1
2
3
4
5
6
7
8
9
10
11
string[] p = Directory.GetDirectories(@"D:\test");
            string[] file;
            for (int i = 0; i < p.Length; i++)
            {
                listBox1.Items.Add(p[i]);
                file = Directory.GetFiles(p[i]);
                for (int j = 0; j < file.Length; j++)
                {
                    listBox1.Items.Add(file[j]);
                }
            }
Возможно есть более правильный способ это сделать, или и этот сгодится?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2016, 20:53
Ответы с готовыми решениями:

Получить список папок и вложенных файлов по указанному пути
Всем привет. Нашел пример, который выводит список файлов и папок, но, из папки с проектом. Как...

Получить список файлов и папок в подкаталоге
Здравствуйте как сделать см. тему ??? фалйы знаю FileInfo а вот каталоги как ?

Показ список файлов из определенных папок
Здравствуйте. Короче идея такая. Есть некоторые виды папок DATA Campaigns Downloads Maps...

Список всех файлов и папок в директории с подпапками
Привет :) Допустим есть директория по пути: &quot;C:\MyDir&quot; В этой директории есть папки и файлы, в...

3
286 / 236 / 127
Регистрация: 24.12.2014
Сообщений: 707
19.11.2016, 21:05 2
Если метод всегда возвращает ожидаемый результат, то то почему он должен быть "неправильным"? Другое дело, когда вопрос касается оптимизации. Если вложенных файлов и директорий очень много, то:
1) лучше использовать асинхронность, чтобы приложение не зависало во время перебора;
2) лучше хранить частями список/массив файлов. Память не казённая )
0
210 / 207 / 146
Регистрация: 20.11.2014
Сообщений: 1,161
19.11.2016, 21:17  [ТС] 3
в веб проекте планирую данный код использовать. как сюда асинхронность прикрутить?
0
286 / 236 / 127
Регистрация: 24.12.2014
Сообщений: 707
19.11.2016, 21:57 4
Цитата Сообщение от bbq Посмотреть сообщение
как сюда асинхронность прикрутить?
любой асинхронный код базируется на синхронном коде, только исполняется синхронный метод в другом потоке, чтобы не тормозить главный(если память не подводит). Я бы сделал так асинхронное чтение:
Кликните здесь для просмотра всего текста
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
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.IO;
using System.Windows.Forms;
using System.Threading.Tasks;
 
namespace ConsoleApplication24 {
 
    class Program {
 
        static void Main( string[] args ) {
 
            ListBox listBox1 = new ListBox();
 
            ReadFilesAsync( listBox1 ); // вызываем метод асинхронно
 
            Console.WriteLine( "DONE" ); // будет выведено первым или одним из первых, хоть метод ReadFilesAsync ещё не закончил работу
 
            Console.ReadKey();
        }
 
        static async void ReadFilesAsync( ListBox listBox1 ) {
            await Task.Run( () => ReadFiles( listBox1 ) ); // вызывает синхронный метод ReadFiles через Task
        }
 
        // привычный синхронный метод, но исполняется в другом потоке, если память не изменяет
        static void ReadFiles( ListBox listBox1 ) {
            string[] p = Directory.GetDirectories( @"D:\test" ); // @"D:\Музика"; ой, это я делал тест
            string[] file;
            for( int i = 0; i < p.Length; i++ ) {
                listBox1.Items.Add( p[ i ] );
                file = Directory.GetFiles( p[ i ] );
                for( int j = 0; j < file.Length; j++ ) {
                     listBox1.Items.Add( file[ j ] );
                    Console.WriteLine( "...ADDED: " + file[ j ] ); // тест, вывод
                }
            }
        }
 
    }
 
}

Перед использованием изучите этот код, чтобы понять как он работает и нужен он Вам вообще.

До всего этого не ко всем файлам и папкам можно получить доступ, так что лучше отлавливать исключения

Если в моей программе нажать любую кнопку, то программа завершит работу, даже если метод ReadFiles ещё выполняется. Это для сведений.

Код в вашем случаи получит только список папок и файлов в директории "D:\test", но папки внутри этой папки учитываться не будут.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2016, 21:57

Создание вложенных папок
Здравствуйте, хотел бы попросить как-нибудь оптимизировать код. Задача сама: создать 10 папок, в...

Достать названия музыки из вложенных папок
Здравствуйте! Есть папка iTunes, в нее вложены папки с исполнителями, в них - с альбомами, в...

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

Как вывести список файлов внутри вложенных папок?
Здравствуйте. Пытаюсь изучать питон и ооп в целом. Задача: вывести список файлов внутри вложенных...


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

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

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