Добавить в цитаты Настройки чтения

Страница 217 из 502

<b>System.IO;</b>

<b>class StrRdrWtrDemo {</b>

<b>  static void Main() {</b>

<b>    StringWriter strwtr = null;</b>

<b>    StringReader strrdr = null;</b>

<b>    try {</b>

<b>      // Создать объект класса StringWriter. </b>

<b>      strwtr = new StringWriter();</b>

<b>      // Вывести данные в записывающий поток типа StringWriter.</b>

<b>      for (int i=0; i &lt; 10; i++)</b>

<b>        strwtr.WriteLine(&quot;Значение i равно: &quot; + i);</b>

<b>      // Создать объект класса StringReader.</b>

<b>      strrdr = new StringReader(strwtr.ToString());</b>

<b>      //А теперь ввести данные из считывающего</b>

<b>      // потока типа StringReader. </b>

<b>      string str = strrdr.ReadLine();</b>

<b>      while(str != null) {</b>

<b>        str = strrdr.ReadLine();</b>

<b>        Console.WriteLine(str);</b>

<b>      }</b>

<b>    } catch(IOException exc) {</b>

<b>      Console.WriteLine(&quot;Ошибка ввода-вывода&quot; + exc.Message);</b>

<b>    } finally {</b>

<b>      // Освободить ресурсы считывающего и записывающего потоков,</b>

<b>      if(strrdr != null) strrdr.Close();</b>

<b>      if(strwtr != null) strwtr.Close();</b>

<b>    }</b>

<b>  }</b>

<b>}</b>

Вот к каком результату приводит выполнение этого кода.

<b>Значение i равно: 1 </b>

<b>Значение i равно: 2 </b>

<b>Значение i равно: 3 </b>

<b>Значение i равно: 4 </b>

<b>Значение i равно: 5 </b>

<b>Значение i равно: 6 </b>

<b>Значение i равно: 7 </b>

<b>Значение i равно: 8 </b>

<b>Значение i равно: 9</b>

В данном примере сначала создается объект strwtr класса StringWriter, в который выводятся данные с помощью метода WriteLine(). Затем создается объект класса StringReader с использованием символьной строки, содержащейся в объекте strwtr. Эта строка получается в результате вызова метода ToString() для объекта strwtr. И наконец, содержимое данной строки считывается с помощью метода ReadLine().

Класс File

В среде .NET Framework определен класс File, который может оказаться полезным для работы с файлами, поскольку он содержит несколько статических методов, выполняющих типичные операции над файлами. В частности, в классе File имеются методы для копирования и перемещения, шифрования и расшифровывания, удаления файлов, а также для получения и задания информации о файлах, включая сведения об их существовании, времени создания, последнего доступа и различные атрибуты файлов (только для чтения, скрытых и пр.). Кроме того, в классе File имеется ряд удобных методов для чтения из файлов и записи в них, открытия файла и получения ссылки типа FileStream на него. В классе File содержится слишком много методов для подробного их рассмотрения, поэтому мы уделим внимание только трем из них. Сначала будет представлен метод Сору(), а затем — методы Exists() и GetLastAccessTime(). На примере этих методов вы сможете получить ясное представление о том, насколько удобны методы, доступные в классе File. И тогда вам станет ясно, что класс File определенно заслуживает более тщательного изучения.

-------------------------------------

СОВЕТ

Ряд методов для работы с файлами определен также в классе Filelnfo. Этот класс отличается от класса File одним, очень важным преимуществом: для операций над файлами он предоставляет методы экземпляра и свойства, а не статические методы. Поэтому для выполнения нескольких операций над одним и тем же файлом лучше воспользоваться классом Filelnfo.

-------------------------------------

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

<b>static void Copy (string имя_исходного_файла, string имя_целевого_файла)</b>

<b>static void Copy (string имя_исходного_файла, string имя_целевого_файла, boolean overwrite)</b>

Метод Copy() копирует файл, на который указывает имя_исходного_файла, в файл, на который указывает имя_целевого_файла. В первой форме данный метод копирует файл только в том случае, если файл, на который указывает имя_целево-го_файла, еще не существует. А во второй форме копия заменяет и перезаписывает целевой файл, если он существует и если параметр overwrite принимает логическое значение true. Но в обоих случаям может быть сгенерировано несколько видов исключений, включая IOException и FileNotFoundException.