Работа с каталогами

Последнее обновление: 30.10.2015

Для управления каталогами мы можем использовать сразу два класса Directory и DirectoryInfo, которые расположены в пространстве имен System.IO.

Класс Directory

Класс Directory содержит ряд статических методов, которые позволяют управлять каталогами. Основные из них:

  • CreateDirectory(path): создает каталог по указанному пути path

  • Delete(path): удаляет каталог по указанному пути path

  • Exists(path): определяет, существует ли каталог по указанному пути path. Если существует, возвращается true, если не существует, то false

  • GetDirectories(path): получает список каталогов в каталоге path

  • GetFiles(path): получает список файлов в каталоге path

  • Move(sourceDirName, destDirName): перемещает каталог по адресу sourceDirName на новый адрес destDirName

  • GetParent(path): получение родительского каталога по отношению к пути path

Класс DirectoryInfo

Данный класс во многом похож на DirectoryInfo и предоставляет похожую функциональность. Некоторые из его свойств и методов:

  • Метод Create() создает каталог

  • Метод CreateSubdirectory(path) создает подкаталог по указанному пути path

  • Метод Delete() удаляет каталог

  • Свойство Exists определяет, существует ли каталог

  • Метод GetDirectories(): получает список каталогов

  • Метод GetFiles() получает список файлов

  • Метод MoveTo(destDirName) перемещает каталог

  • Свойство Parent возвращает родительский каталог

  • Свойство Root возврашает корневой каталог

Теперь используем эти классы в программе.

Получение списка файлов и подкаталогов

Imports System.IO

Module Module1

    Sub Main()

        Dim path As String = "C:\"

        If Directory.Exists(path) = True Then
            Console.WriteLine("Подкаталоги:")
            Dim dirs As String() = Directory.GetDirectories(path)
            For Each s As String In dirs
                Console.WriteLine(s)
            Next
            Console.WriteLine()
            Console.WriteLine("Файлы:")
            Dim files As String() = Directory.GetFiles(path)
            For Each s As String In files
                Console.WriteLine(s)
            Next

        End If

        Console.ReadLine()
    End Sub

End Module

Создание каталога

Dim newDir As String = "C:\SomeDir"
Dim subFolder As String = "program\avalon"
Dim dirInfo As New DirectoryInfo(newDir)
If dirInfo.Exists = False Then
    dirInfo.Create()
End If

dirInfo.CreateSubdirectory(subFolder)

Прежде чем создать новый каталог, мы проверяем, имеется ли уже такой каталог. Если он существует, то создать его будет нельзя, и приложение выбросит ошибку. После создания каталога у нас получится следующий путь: "C:\SomeDir\program\avalon"

Получение информации о каталоге

Dim dir As String = "C:\Program Files"
Dim dirInfo As New DirectoryInfo(dir)
Console.WriteLine("Название каталога: {0}", dirInfo.Name)
Console.WriteLine("Полное название каталога: {0}", dirInfo.FullName)
Console.WriteLine("Время создания каталога: {0}", dirInfo.CreationTime)
Console.WriteLine("Корневой каталог: {0}", dirInfo.Root)

Удаление каталога

Если мы просто применим метод Delete к непустой папке, в которой есть какие-нибудь файлы или подкаталоги, то приложение нам выбросит ошибку. Поэтому нам надо передать в метод Delete дополнительный параметр булевого типа, который укажет, что папку надо удалять со всем содержимым:

Dim dir As String = "E:\SomeFolder"
Try
    Dim dirInf As New DirectoryInfo(dir)
    dirInf.Delete(True)
Catch ex As Exception
    Console.WriteLine(ex.Message)
End Try

Или так:

Dim dir As String = "E:\SomeFolder"

Directory.Delete(dir, True)

Перемещение каталога

Dim oldPath As String = "C:\SomeDir"
Dim newPath As String = "C:\SomeFolder"
Dim dirInfo As New DirectoryInfo(oldPath)
If dirInfo.Exists = True AndAlso Directory.Exists(newPath) = False Then
    dirInfo.MoveTo(newPath)
End If

При перемещении надо учитывать, что перемещение может происходить только в пределах одного логического раздела - то есть из диска C мы можем переместить только в любое место на этом же диске C, но никак не на диск D и т.д. Кроме того, новый каталог, в который мы хотим перемесить все содержимое старого каталога, не должен существовать.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850