- •Цель работы
- •Общие сведения Класс Environment
- •Работаем со специальными папками
- •Получаем список всех дисков
- •Ввод/вывод в c# (System.Io)
- •Классы для работы с папками и файлами
- •Класс Directory
- •Класс File
- •Класс FileSystemInfo
- •Класс DirectoryInfo
- •Класс DirectoryInfo
- •Перечисление FileAttributes
- •Класс FileInfo
- •Пример: получение имен всех подпапок
- •Класс Path
- •Класс FileSystemWatcher
- •Перечисление NotifyFilters
- •Перечисление WatcherChangeTypes
- •Побайтовое чтение/запись. Чтение текстовых данных
- •Асинхронный доступ к файлам
- •Сетевое программирование
- •Dns класс
- •IpHostEntry класс
- •IpEndPoint класс
- •Класс Socket
- •Протокол udp
- •Шифрование
- •Ход работы
- •Контрольные вопросы
- •Отчетность
- •Дополнительная литература
Ввод/вывод в c# (System.Io)
Для операций ввода-вывода служит пространство имен System.IO.
Вот краткий обзор наиболее важных классов и перечислений из этого пространства имен:
» BinaryReader – позволяет читать из файла данные различных типов (целые, вещественные, логические и т. п.)
» BinaryWriter – позволяет записывать в файл данные различных типов (целые, вещественные, логические и т. п.)
» Directory – класс со статическими методами для работы с папками
» DirectoryInfo – класс для работы с некоторой папкой
» File – класс со статическими методами для работы с файлом
» FileInfo – класс для работы с некоторым файлом
» Path – класс для работы с файловыми путями
» Перечисление FileAttributes – атрибуты файла
» Перечисление FileMode – возможные способы открытия файла
» Перечисление FileAccess содержит константы, показывающие, открыт ли файл для чтения, записи и др.
» FileSystemWatcher – класс для отслеживания изменений в файловой системе
» Перечисление NotifyFilters – параметры, по которым происходит отслеживание изменений в файловой системе
» Перечисление WatcherChangeTypes – какие изменения отслеживаются в файловой системе.
Классы для работы с папками и файлами
Для работы с файлами и папками в пространстве имен System.IO существуют следующие классы:
Directory – содержит ряд статических методов для выполнения различных операций с папками (создание, удаление, проверка существования, получение текущей папки и т. п.).
DirectoryInfo – аналогичен классу Directory, только его методы не статические – для использования этого класса надо создать его экземпляр (параметром для конструктора служит имя папки).
File – содержит ряд статических методов для выполнения различных операций с файлами (создание, удаление, копирование и т. п.).
FileInfo – аналогичен классу File, только его методы не статические – для использования этого класса надо создать его экземпляр (параметром для конструктора служит имя файла).
Классы Directory и File яляются непосредственными потомками класса Object, а классы DirectoryInfo и FileInfo – потомками абстрактного класса FileSystemInfo.
Класс Directory
Класс Directory предназначен для работы с папками. Этот класс содержит статические методы для работы с папками (в отличие от класса DirectoryInfo, который содержит аналогичные методы, применяемые для экзампляра класса).
Вот основные методы класса Directory (все они статические):
» CreateDirectory – создает папку с указанным именем.
» Exists – проверяет существование папки с указанным именем.
» Delete – удаляет папку с указанным именем.
» Move – перемещает или переименовывает папку с указанным именем.
А вот пример их употребления:
using System;
//Подключаем необходимое пространство имен.
using System.IO;
namespace constest
{
class Class1
{
...
static void Main(string[] args)
{
//Создаем папку.
Directory.CreateDirectory("C:\\temp");
//Проверка существования папки.
if(Directory.Exists("C:\\temp1"))
{
Console.WriteLine("Папка \"temp1\" существует");
}
else
{
Console.WriteLine("Папка \"temp1\" не существует");
}
if(Directory.Exists("C:\\temp"))
{
Console.WriteLine("Папка \"temp\" существует");
}
else
{
Console.WriteLine("Папка \"temp\" не существует");
}
//Перемещение папки.
Directory.Move( "C:\\temp", "C:\\temp2");
//Удаление папки.
Directory.Delete( "C:\\temp2");
}
}
}
Обратите внимание, что метод Move можно использовать не только для перемещения, но и для переименования папки (что мы, фактически, в нашем примере и делаем). Для этого папка, задаваемая первым параметром (т. е. та, которую перемещаем) должна находиться на том же уровне, что и папка, задаваемая вторым параметром (т. е. куда перемещаем).
