Для управления каталогами мы можем использовать сразу два класса Directory и DirectoryInfo, которые расположены в пространстве имен System.IO.
Класс 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 и предоставляет похожую функциональность. Некоторые из его свойств и методов:
Метод 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 и т.д. Кроме того, новый каталог, в который мы хотим перемесить все содержимое старого каталога, не должен существовать.