Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_1 / С_17_Работа с файлами.ppt
Скачиваний:
18
Добавлен:
19.04.2015
Размер:
1.71 Mб
Скачать

17.1.2 Класс File

Класс File предназначен для работа с файлами. Он содержит статические методы, которые позволяют

создавать, удалять, переименовывать и выполнять другие операции с файлами.

Основные методы класса File:

Create – создание файла.

Exists – проверка существования файла. Delete – удалениие файла.

Move – переименование и перемещение файла. Copy – копирование файла.

Пример: Применение методов класса

//Создаем файл. File.Create("C:\\0.txt");

//Проверка существования файла. if(File.Exists("C:\\1.txt"))

{

//Удаление файла. File.Delete("C:\\1.txt");

}

File:

Задание:

Реализуйте

программу,

аналогичную примеру из параграфа 17.1.1, но работающую с

файлами.

//Переименование файла 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");

17.1.3 Класс FileSystemInfo

Класс FileSystemInfo является предком для классов DirectoryInfo и FileInfo. Поэтому все его элементы присутствуют ив данных классах.

Основные свойства и методы класса FileSystemInfo (все они применимы как к файлам, так и к папкам):

Delete – метод для удаления.

CreationTime – читает или задает время создания.

LastAccessTime – читает или задает время последнего доступа.

LastWriteTime – читает или задает время последней записи.

Attributes – читает или задает атрибуты (скрытый, сжатый, системный, временный, только для чтения и др.). Один из

атрибутов (а именно Directory) позволяет выяснить, не является ли объект папкой.

FullName – читает полное имя (диск, папки, подпапки и т. д.).

Name – имя файла или папки.

17.1.4 Класс 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.CreateSubdirectory("subdir1"); di.CreateSubdirectory("subdir2");

//Получение имен всех подпапок. DirectoryInfo[] ds = di.GetDirectories(); s = "Вложенные папки:\n";

foreach (DirectoryInfo d in ds)

{s+=d.Name+" \n"; } MessageBox.Show(s);

// Удаление папки и всех подпапок. di.Delete(true);

TRUE – УДАЛЯЮТСЯ И ПОДПАПКИ

17.1.5 Множество FileAttributes

С помощью множества FileAttributes задаются атрибуты для файлов и папок.

Наиболее важные значения этого множества:

Directory – определяет, не есть ли объект папка.

Hidden – определяет, не является ли объект (папка или файл) скрытым.

ReadOnly – определяет, не имеет ли файл атрибут “только

для чтения”.

Normal – определяет, что для файла не установлены любые другие атрибуты. Данный элемент множества не может

комбинироваться с другими элементами этого множества. System – определяет, не является ли файл системным. Archive – определяет, не является ли файл архивным.

Compressed – определяет, не является ли файл сжатым

файлом.

Пример:

// Создание объекта DirectoryInfo. DirectoryInfo di = new

DirectoryInfo("d:\\tmp\\tmp2");

//Присваиваем атрибут "Только для чтения". di.Attributes |= FileAttributes.Hidden;

//Получаем атриубты файла.

FileAttributes fa = di.Attributes;

// Выясняем, есть ли у папки атрибут Hidden. if ((fa & FileAttributes.Hidden) ==

FileAttributes.Hidden)

{label1.Text="Hidden";}

//Выясняем, есть ли у папки атрибут ReadOnly. if ((fa & FileAttributes.ReadOnly) ==

FileAttributes.ReadOnly) { label2.Text="ReadOnly";}

17.1.6 Класс FileInfo

Класс FileInfo представляет из себя файл, находящийся на жестком диске. С помощью этого класса можно производить стандарные операции с файлом, а также получить значения характеристик файла (время последнего доступа, размер и др.) и атрибуты файла (скрытый, системный и др.).

Пример работы с файлом:

// Читаем информацию о файле.

FileInfo fi = new FileInfo(@"C:\tmp\1.txt"); FileInfo fi = new FileInfo("C:\\tmp\\1.txt");

// Выводим информацию о файле. string s = "";

// Полное имя.

s += fi.FullName + "\n";

//Только имя файла. s += fi.Name + "\n";

//Полный путь без имени файла. s += fi.DirectoryName + "\n"; MessageBox.Show(s);

// Создаем новый файл.

fi = new FileInfo(@"C:\tmp\2.txt"); FileStream fs = fi.Create();

//Закрываем поток, связанный с файлом. fs.Close();

//Показываем время создания. MessageBox.Show("Creation {0} "+

fi.CreationTime);

// Проверяем, существует ли файл. if (fi.Exists)

{

// Удаляем файл. fi.Delete();

}

17.2 Потоки данных

Все операции с файлами выполняются в программах С# с помощью так называемых потоков данных (data

stream).

Программы могут выполнять над потоками данных 3 операции:

запись данных в поток,

чтение данных из потока,

позиционирование.

Программа С# может работать с потоками нескольких типов:

стандартными потоками ввода и вывода,

потоками, связанными с локальными файлами,

потоками, связанными с файлами в оперативной памяти.