При создании объекта DirectoryInfо или FileInfo конструктору передается полный путь, как показано ниже:
DirectoryInfо myDirectory = new DirectoryInfо(@"c:\Temp");
FileInfo myFile = new FileInfo(@"c:\Temp\readme.txt");
Когда вы создаете новый объект DirectoryInfo или FileInfo, то в случае неправильного формата путевого имени получаете исключение (например, если оно содержит недопустимые символы). Однако путь не обязательно должен соответствовать реальному физическому файлу или каталогу. Если вы не уверены, то можете использовать Exists, чтобы проверить, существует ли данный файл или каталог.
Если файл или каталог не существует, всегда можно воспользоваться методом Create() для его создания, например:
// Определить новый каталог и файл.
DirectoryInfо myDirectory = new DirectoryInfo(@"c:\Temp\Test");
FileInfo myFile = new FileInfo(@"c:\Temp\Test\readme.txt");
// Теперь, создать их. Последовательность важна.
// Вы не можете создать файл в каталоге, который еще не существует.
myDirectory.Create();
FileStream stream = myFile.Create();
stream.Close();
Объекты DirectoryInfо и FileInfo извлекают информацию из файловой системы при первом обращении к свойству. При последующем использовании они не проверяют новую информацию. Это может привести в несогласованности, если между тем файл был изменен. Если вы знаете точно или подозреваете, что информация файловой системы была изменена для данного объекта, то должны вызвать метод Refresh() для получения актуальной информации.
Класс DirectoryInfo не представляет никакого свойства для определения информации об общем размере. Однако вы можете вычислить общий размер всех файлов в определенном каталоге достаточно просто, суммируя значения FileInfo.Length для каждого из них.
Прежде чем предпринять такой шаг, необходимо решить, включать ли в общую сумму размеры подкаталогов. Следующий метод позволяет использовать любой подход:
private static long QetDirectorySize'(Directorylnfо directory,
bool includeSubdirectories)
{
long totalSize = 0;
// Добавить размер каждого файла.
FileInfo[] files = directory.GetFiles();
foreach (FileInfo file in files)
{
totalSize += file.Length;
}
// Добавить размер каждого подкаталога, если нужно.
if (includeSubdirectories)
{
DirectoryInfo[] dirs = directory.GetDirectories();
...
предыдущая следующая страница вначало главы оглавление
577