- •Цель работы
- •Общие сведения Класс Environment
- •Работаем со специальными папками
- •Получаем список всех дисков
- •Ввод/вывод в c# (System.Io)
- •Классы для работы с папками и файлами
- •Класс Directory
- •Класс File
- •Класс FileSystemInfo
- •Класс DirectoryInfo
- •Класс DirectoryInfo
- •Перечисление FileAttributes
- •Класс FileInfo
- •Пример: получение имен всех подпапок
- •Класс Path
- •Класс FileSystemWatcher
- •Перечисление NotifyFilters
- •Перечисление WatcherChangeTypes
- •Побайтовое чтение/запись. Чтение текстовых данных
- •Асинхронный доступ к файлам
- •Сетевое программирование
- •Dns класс
- •IpHostEntry класс
- •IpEndPoint класс
- •Класс Socket
- •Протокол udp
- •Шифрование
- •Ход работы
- •Контрольные вопросы
- •Отчетность
- •Дополнительная литература
Класс File
Класс File предназначен для работа с файлами. Он содержит статические методы, котроые позволяют создавать, удалять, переименовывать и делать другие действия с файлами. Для этого класса существует парный класс FileInfo, содержащий аналогичные методы экземпляра класса.
Вот основные методы класса File (все они, разумеется, статические):
» Create – создание файла.
» Exists – проверка существования файла.
» Delete – удалениие файла.
» Move – переименование и перемещение файла.
» Copy – копирование файла.
А вот пример, демонстрирующий применение этих методов:
using System;
// Подключаем необходимое пространство имен.
using System.IO;
namespace contest
{
class Test
{
public static void Main()
{
// Создаем файл.
File.Create("C:\\0.txt");
// Проверка существования файла.
if(File.Exists("C:\\1.txt"))
{
// Удаление файла.
File.Delete("C:\\1.txt");
}
// Переименование файла a.txt в b.txt.
File.Move("C:\\a.txt", "C:\\b.txt");
// Перемещение файла.
File.Move("C:\\c.txt", "D:\\c.txt");
// Копирование файла.
File.Copy("D:\\z.txt", "D:\\x.txt");
}
}
}
Обратите внимание, что и для перемещения, и для переименования файла мы используем один и тот же статичесикй метод Move (так как по сути это одна и та же операция).
Класс FileSystemInfo
Класс FileSystemInfo является предком для классов DirectoryInfo и FileInfo. Именно поэтому мы и рассмотрим этот класс прежде рассматрения классов DirectoryInfo и FileInfo.
Класс FileSystemInfo содержит ряд свойств, которые позврляют получить общие характеристики файла или папки – например, время создания, различные атрибуты (только для чтения, скрытый и т. п.).
Вот наиболее важные методы свойства и методы этого класса (все эти свойства и методы применимы как к файлам, так и к папкам):
» Delete – метод для удаления.
» Refresh – метод для обновления информации о файле или папке (вызывается, например, перед получением атрибутов).
» CreationTime – читает или задает время создания.
» LastAccessTime – читает или задает время последнего доступа.
» LastWriteTime – читает или задает время последней записи.
» Attributes – читает или задает атрибуты (скрытый, сжатый, системный, временный, только для чтения и др.). Один из атрибутов (а именно Directory) позволяет выяснить, не является ли объект папкой.
» FullName – читает полное имя (диск, папки, подпапки и т. д.).
» Name – имя файла или папки.
» Extension – расширение.
» Exists – существование файла или папки.
Класс DirectoryInfo
Класс DirectoryInfo предназначен для работы с папками. Он позволяет делать стандартные операции – перемещение, удаление, создание папок и подпапок и др.. Кроме того, методы этого класса позволяют получить все подкаталоги и файлы указанной папки. В отличие от класса Directory, методы класса DirectoryInfo – это методы экземпляра (т. е. они не статические).
Вот пример использования этого класса:
// Создание объекта.
DirectoryInfo di = new DirectoryInfo("c:\\tmp\\tmp2");
// Создаем папку.
di.Create();
// Вывод информации о папке.
String s = "";
s += "Full nane: " + di.FullName + "\n";
s += "Root: " + di.Root + "\n";
s += "Name: " + di.Name;
MessageBox.Show(s);
// Перемещение папки.
di.MoveTo("c:\\tmp\\tmp3");
// Создание подпапок.
di.CreateSubdirectory("subdir1");
di.CreateSubdirectory("subdir2");
// Получение имен всех подпапок.
DirectoryInfo [] ds = di.GetDirectories();
foreach(DirectoryInfo d in ds)
{
MessageBox.Show(d.Name);
}
// Удаление папки и всех подпапок.
di.Delete(true);
Обратите внимание, что отдельного метода для переименования нет – для переименования мы используем метод MoveTo, в качестве параметра которого мы указываем новое имя.
Также обратите внимание, что в методе Delete для удаления вместе с папкой всех ее подпапок мы должны указать параметр true. Если же мы укажем параметр false или ничего не укажем, то возникнет соответствующее исключение.
