
- •11. Организация работы с файлами
- •11.1. Использование стандартных диалоговых окон открытия и сохранения файлов
- •11.2. Использование стандартного диалогового окна обзора папок
- •11.3. Использование класса System.Io.File для работы с файлами
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •If (!File.Exists(path))
- •11.4. Использование класса System.Io.Directory для работы с папками
- •If (Directory.Exists(currentDir)) // Если папка существует
- •If (Directory.Exists(sourceDir) & Directory.Exists(destDir) &
- •If (Directory.Exists(destDir)) // Если папка существует
- •11.5. Использование класса System.Io.Path для работы со строкой пути к папке или файлу
- •If (Path.HasExtension(path1))
- •If (!Path.HasExtension(path2))
- •If (!Path.IsPathRooted(path3))
- •11.6. Использование класса System.Io.FileInfo для работы с файлами
- •If (!fi1.Exists)
- •11.7. Использование класса System.Io.DirectoryInfo для работы с файлами и папками
- •If (cd.Exists) // Если заданная папка существует...
- •If (sd.Exists & dd.Exists & !md.Exists)
- •If (dd.Exists) // Если папка существует
- •11.8. Использование класса System.Io.DriveInfo для работы с дисками
- •11.9. Использование класса System.Io.FileStream для работы с файлами
- •If (fs.CanRead && fs.CanWrite)
- •11.10. Использование классов System.Io.StreamReader и System.Io.StreamWriter для работы с файлами
If (cd.Exists) // Если заданная папка существует...
{ // Создание папок и файлов
sd.Create(); // Создание
DirectoryInfo sdd = sd.CreateSubdirectory("Dir"); // новых
dd.Create(); // папок
StreamWriter f1 = File.CreateText(sourceDir +
@"\Test1.txt"); // Созание файла
f1.WriteLine("Test 1"); // Запись в файл
f1.Close(); // Закрытие файла
StreamWriter f2 = File.CreateText(sourceDir +
@"\Test2.txt"); // Созание файла
f2.WriteLine("Test 2"); // Запись в файл
f2.Close(); // Закрытие файла
Console.WriteLine("Папки и файлы созданы.");
}
Console.ReadLine();
// Вывод содержимого папки и подсчет папок и файлов в ней
Console.WriteLine("Содержимое папки {0}:", sourceDir);
DirectoryInfo[] sdArr = sd.GetDirectories();
foreach (DirectoryInfo fName in sdArr)
Console.WriteLine(" {0}\t\t<папка>", fName.Name);
FileInfo[] sfArr = sd.GetFiles();
foreach (FileInfo fName in sfArr)
Console.WriteLine(" {0}", fName.Name);
Console.WriteLine("Итого: {0} папок и {1} файлов.",
sd.GetDirectories().Length, sd.GetFiles().Length);
Console.ReadLine();
If (sd.Exists & dd.Exists & !md.Exists)
{ sd.MoveTo(moveDir); // Перемещение папки
Console.WriteLine("Папка {0} перемещена в {1} .",
sourceDir, moveDir);
}
Console.ReadLine();
If (dd.Exists) // Если папка существует
{ dd.Delete(true); // Удаление папки
Console.WriteLine("Папка {0} со всем содержимым удалена.",
destDir);
}
Console.ReadLine();
}
}
/* Вывод:
Папки и файлы созданы.
Содержимое папки c:\temp\Source :
Dir <папка>
Test1.txt
Test2.txt
Итого: 1 папок и 2 файлов.
Папка c:\temp\Source перемещена в c:\temp\Destination\Source .
Папка c:\temp\Destination со всем содержимым удалена.
*/
11.8. Использование класса System.Io.DriveInfo для работы с дисками
(http://msdn.microsoft.com/ru-ru/library/system.io.driveinfo.aspx)
Таблица 11.13. Основные свойства и методы класса DriveInfo из пространства имен System.IO
Имя |
Описание |
Свойства |
|
AvailableFreeSpace |
Указывает объем доступного для пользователя свободного места на диске (в байтах). |
DriveFormat |
Получает строку, содержащую имя файловой системы, например NTFS или FAT32. |
DriveType |
Получает тип диска (константа из перечисления DriveType, таблица 11.12). |
IsReady |
Получает значение (типа bool), определяющее готовность диска. |
Name |
Получает строку, содержащую имя диска. |
RootDirectory |
Получение объекта DirectoryInfo, содержащего корневой каталог диска. |
TotalFreeSpace |
Получает общий объем свободного места, доступного на диске (в байтах). |
TotalSize |
Получает общий размер области хранения на диске (в байтах). |
VolumeLabel |
Получает или задает метку тома диска (для NTFS – до 32-х символов). |
Методы |
|
GetDrives(); |
Возвращает массив имен всех логических дисков данного компьютера. |
ToString(); |
Возвращает строку, содержащую имя диска (возвращает свойство Name). |
Таблица 11.14. Константы из перечисления System.IO.DriveType, определяющие тип диска (накопителя)
Имя члена |
Описание |
Unknown |
Неизвестный тип диска. |
NoRootDirectory |
Диск не содержит корневого каталога. |
Removable |
Диск является съемным устройством хранения, например дисководом гибких дисков или USB-устройством флэш-памяти. |
Fixed |
Диск является жестким диском. |
Network |
Диск сетевым диском. |
CDRom |
Диск является оптическим дисковым устройством, например компакт-диском или DVD-диском. |
Ram |
Диск является диском ОЗУ. |
Пример 11.13. Использование метода GetDrives и свойств IsReady, Name, DriveType, VolumeLabel, DriveFormat, AvailableFreeSpace, TotalFreeSpace, TotalSize класса DriveInfo для отображения информации обо всех дисках в текущей системе.
using System;
using System.IO;
class TestDriveInfo
{ public static void Main()
{ DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{ Console.WriteLine("Диск {0}", d.Name);
Console.WriteLine(" Тип диска: {0}", d.DriveType);
if (d.IsReady == true) // Если диск готов
{ Console.WriteLine(" Метка тома: {0}",
d.VolumeLabel);
Console.WriteLine(" Файловая система: {0}",
d.DriveFormat);
Console.WriteLine(" Доступное пространство текущему " +
"пользователю:{0, 15} б.", d.AvailableFreeSpace);
Console.WriteLine(" Полное доступное пространство: " +
" {0, 15} б.", d.TotalFreeSpace);
Console.WriteLine(" Полный размер диска: " +
" {0, 15} б.", d.TotalSize);
}
}
Console.ReadLine();
}
}
/* Вывод:
Диск A:\
Тип диска: Removable
Диск C:\
Тип диска: Fixed
Метка тома: System
Файловая система: NTFS
Доступное пространство текущему пользователю: 4770430976 б.
Полное доступное пространство: 4770430976 б.
Полный размер диска: 10731683840 б.
Диск D:\
Тип диска: Fixed
Метка тома: Data
Файловая система: NTFS
Доступное пространство текущему пользователю: 15114977280 б.
Полное доступное пространство: 15114977280 б.
Полный размер диска: 25958948864 б.
Диск E:\
Тип диска: CDRom
Диск F:\
Тип диска: Removable
Метка тома: Flash
Файловая система: FAT32
Доступное пространство текущему пользователю: 2059624448 б.
Полное доступное пространство: 2059624448 б.
Полный размер диска: 4004012032 б.
(Фактическое содержание вывода определяется конфигурацией
конкретного компьютера.)
*/