Получаем имена файлов из заданной папки

Очень часто программисту приходится работать с файлами, которые находятся в определенной папке. Например, есть приложение, которое ночью выводит прайс-листы из базы данных в определенную папку. В идеальном случае, вы можете жестко прописать в коде названия файлов. Но это неправильный подход, ведь нет гарантии, что разработчик не поменяет названия выводимых файлов или изменится их число. Поэтому лучше обезопасить себя от таких случаев и поручить работу по получению имен файлов из папки самой программе.

К счастью, есть удобный класс DirectoryInfo из пространства имен System.IO, который предоставляет различные методы для работы с каталогом: создание, удаление, перечисление содержимого каталога. Последний метод нам и нужен. Метод носит название GetFiles, который и позволяет получить список файлов.

Перейдем к практике. Расположим на форме элементы ListBox (список) и Button (кнопку). Пишем код для кнопки:

using System.IO;

private void button1_Click(object sender, EventArgs e)
{
    
    DirectoryInfo dinfo = new DirectoryInfo("E:\\Down");
    FileInfo[] files = dinfo.GetFiles();
    foreach (FileInfo filenames in files)
    {
        listBox1.Items.Add(filenames);
    }
}

Используя цикл foreach, мы проходим по полученному массиву имен файлов из папки E:\Down и заполняем список ListBox. Это простейший пример. У метода GetFiles есть еще одна перегруженная версия, позволяющая задать шаблон для файла. Предположим, нас не интересуют все файлы в папке, а только файлы с расширением PDF. Тогда вам нужен метод GetFiles(string searchPattern), у которого в параметре вы можете указать шаблон для поиска. Вы можете использовать подстановочные знаки * и ?. Например, так.

DirectoryInfo dinfo = new DirectoryInfo("E:\\Down");
FileInfo[] files = dinfo.GetFiles("*.pdf"");
foreach (FileInfo filenames in files)
{
    listBox1.Items.Add(filenames);
}
Реклама