Список папок и вложенных файлов - C#
Формулировка задачи:
имеется одна корневая папка, в ней список папок, имя каждой папки это дата, например 19.11.2016. В каждой папке имеется список файлов. В дальнейшем нужно будет это занести в таблицу(html) в виде дата создания-имя. Делаю так
Возможно есть более правильный способ это сделать, или и этот сгодится?
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]);
}
}Решение задачи: «Список папок и вложенных файлов»
textual
Листинг программы
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 ] ); // тест, вывод
}
}
}
}
}