Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
184
Добавлен:
24.02.2016
Размер:
169 Кб
Скачать
☆

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

Для организации ввода и вывода используется класс 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); } } } }