Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 11. Файлы.doc
Скачиваний:
8
Добавлен:
02.05.2019
Размер:
168.96 Кб
Скачать

Консольный ввод-вывод

Для организации ввода и вывода используется класс Console, определенный в пространстве имен System. В этом классе определены три стандартных потока: входной поток Console.In класса TextReader и выходные потоки Console.Out и Console.Error класса TextWriter.

По умолчанию входной поток связан с клавиатурой, а выходные – с экраном, однако можно перенаправить эти потоки на другие устройства с помощью методов SetIn и SetOut или средствами операционной системы (перенаправление с помощью операции << и >>).

При обмене с консолью можно применять методы указанных потоков, но чаще используется методы класса Console – Read, ReadLine, Write и WriteLine, которые просто передают управление методам нижележащих классов In, Out и Error.

Работа с каталогами и файлами

В пространстве имен System.IO есть четыре класса, предназначенные для работы с физическими файлами и структурой каталогов на диске: Directory, File, DirectoryInfo и FileInfo. С их помощью можно выполнять создание, удаление, перемещение файлов и каталогов, а также получение их свойств. Основные элементы этих классов представлены в таблицах 11.9 и 11.10.

Таблица 11.9 - Свойства класса FileSystemInfo

Свойства Описание

Attributes Получить или установить атрибуты для данного объекта файловой

системы. Для этого свойства используется значение FileAttributes

CreationTime Получить или установить время создания объекта файловой системы

Exists Определить, существует ли данный объект файловой системы

Extension Получить расширение файла

FullName Возвратить имя файла или каталога с указанием полного пути

LastWriteTime Получить или установить время последнего обращения к объекту

файловой системы

LastWriteTime Получить или установить время последнего внесения изменений в объект

файловой системы

Name Возвратить имя файла. Это свойство доступно только для чтения.

Для каталогов возвращает имя последнего каталога в иерархии, если

это возможно. Если нет, возвращает полностью определенное имя

Таблица 11.10 - Элементы класса DirectoryInfo

Элемент Описание

Create, Создать каталог или подкаталог по указанному пути в файловой

CreateSubDirectory системе

Delete Удалить каталог со всем его седержимым

GetDirectories Возвратить массив строк, представляющих все подкаталоги

GetFiles Получить файлы в текущем каталоге в виде массива объектов

класса FileInfo

MoveTo Переместить каталог и все его содержимое на новый адрес

в файловой системе

Parent Возвратить родительский каталог

Пример работы с файлами и каталогами с использованием класса Directory

В данном примере создаются два каталога, выводится информация о них и предпринимается попытка удаления каталога.

using System;

using System.IO;

namespace ConsoleApplication1

{

class Class1

{

static void DirInfo(DirectoryInfo di)

{

//вывод информации о каталоге

Console.WriteLine("=====Directory Info=====");

Console.WriteLine("FullName:" + di.FullName);

Console.WriteLine("Name:" + di.Name);

Console.WriteLine("Parent:" + di.Parent);

Console.WriteLine("Creation:" + di.CreationTime);

Console.WriteLine("Attributes:" + di.Attributes);

Console.WriteLine("Root:" + di.Root);

Console.WriteLine("==========================");

}

static void Main()

{

DirectoryInfo di1 = new DirectoryInfo(@"с:\MyDir");

DirectoryInfo di2 = new DirectoryInfo(@"c:\MyDir\temp");

try

{

//Создать каталоги

di1.Create();

di2.Create();

//Вывести информацию о каталогах

DirInfo(di1);

DirInfo(di2);

//Попытаться удалить каталог

Console.WriteLine("Попытка удалить {0}.", di1.Name);

di1.Delete();

}

catch (Exception)

{

Console.WriteLine("Попытка не удалась");

} } }

* Результат работы программы

* =====Directory Info=====

* FullName: c:\MyDir

* Name: MyDir

* Parent:

* Creation: 30.04.2006 17:14:44

* Attributes: Directory

* Root: c:\

* ========================

* =====Directory Info=====

* FullName: c:\MyDir\temp

* Name: temp

* Parent:

* Creation: 30.04.2006 17:14:44

* Attributes: Directory

* Root: c:\

* ========================

* Попытка удалить MyDir

* Попытка не удалась

Каталог не пуст, поэтому попытка его удаления не удалась. Однако, если использовать метод Delete с одним параметром, задающим режим удаления, можно удалить и непустой каталог:

di1.Delete( true ); //удаляет непустой каталог

Пример работы с файлами и каталогами с использованием класса FileInfo

В данном примере копируются все файлы с расширением jpg из каталога d:\foto в каталог d:\temp. Метод Exists позволяет проверить, существует ли исходный каталог.

using System;

using System.IO;

namespace ConsoleApplication1

{

class Class1

{

static void Main()

{

try

{ string DestName = @"d:\temp\";

DirectoryInfo dest = new DirectoryInfo(DestName);

dest.Create(); //создание целевого каталога

DirectoryInfo dir = new DirectoryInfo(@"d:\foto");

if (!dir.Exists) //проверка существования каталога

{

Console.WriteLine("Каталог " +

dir.Name + " не существует");

Console.ReadKey();

return;

}

FileInfo[] files = dir.GetFiles("*.jpg"); //список файлов

foreach (FileInfo f in files)

f.CopyTo(dest + f.Name); //копирование файла

Console.WriteLine("Скопировано" + files.Length + "jpg-файлов");

}

catch (Exception e) { Console.WriteLine("Error:" + e.Message); } } } }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]