Для управления каталогами мы можем использовать сразу два класса 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 и т.д. Кроме того, новый каталог, в который мы хотим перемесить все содержимое старого каталога, не должен существовать.