C# 4.0 полное руководство - 2011
Шрифт:
str = strrdr.ReadLine;
Console.WriteLine(str);
}
} catch(IOException exc) {
Console.WriteLine("Ошибка ввода-вывода\п" + exc.Message);
} finally {
// Освободить ресурсы считывающего и записывающего потоков, if(strrdr != null) strrdr.Close; if(strwtr != null) strwtr.Close ;
}
}
}
Вот к каком результату приводит выполнение этого кода.
Значение i равно: 1 Значение i равно: 2 Значение i равно: 3 Значение i равно: 4 Значение i равно: 5 Значение i
В данном примере сначала создается объект strwtr класса StringWriter,B который выводятся данные с помощью метода WriteLine. Затем создается объект класса StringReader с использованием символьной строки, содержащейся в объекте strwtr. Эта строка получается в результате вызова метода ToString для объекта strwtr. И наконец, содержимое данной строки считывается с помощью метода ReadLine .
Класс File
В среде .NET Framework определен класс File, который может оказаться полезным для работы с файлами, поскольку он содержит несколько статических методов, выполняющих типичные операции над файлами. В частности, в классе File имеются методы для копирования и перемещения, шифрования и расшифровывания, удаления файлов, а также для получения и задания информации о файлах, включая сведения об их существовании, времени создания, последнего доступа и различные атрибуты файлов (только для чтения, скрытых и пр.). Кроме того, в классе File имеется ряд удобных методов для чтения из файлов и записи в них, открытия файла и получения ссылки типа FileStream на него. В классе File содержится слишком много методов для подробного их рассмотрения, поэтому мы уделим внимание только трем из них. Сначала будет представлен метод Сору , а затем — методы Exists и GetLastAccessTime . На примере этих методов вы сможете получить ясное представление о том, насколько удобны методы, доступные в классе File. И тогда вам станет ясно, что класс File определенно заслуживает более тщательного изучения.
СОВЕТ
Ряд методов для работы с файлами определен также в классе Filelnfo. Этот класс отличается от класса File одним, очень важным преимуществом: для операций над файлами он предоставляет методы экземпляра и свойства, а не статические методы. Поэтому для выполнения нескольких операций над одним и тем же файлом лучше воспользоваться классом Filelnfo.
Копирование файлов с помощью метода Сору
Ранее в этой главе демонстрировался пример программы, в которой файл копировался вручную путем чтения байтов из одного файла и записи в другой. И хотя задача копирования файлов не представляет особых трудностей, ее можно полностью автоматизировать с помощью метода Сору , определенного в классе File. Ниже представлены две формы его объявления.
static void Copy (string имя_исходного_файла, string имя_целевого_файла) static void Copy (string имя_исходного_файла, string имя_целевого_файла, boolean overwrite)
Метод Copy копирует файл, на который указывает имя_исходного_файла, в
В приведенном ниже примере программы метод Сору применяется для копирования файла. Имена исходного и целевого файлов указываются в командной строке. Обратите внимание, насколько эта программа короче демонстрировавшейся ранее. Кроме того, она более эффективна.
/* Скопировать файл, используя метод File.CopyO.
Чтобы воспользоваться этой программой, укажите имя исходного и целевого файлов. Например, чтобы скопировать файл FIRST.DAT в файл SECOND.DAT, введите в командной строке следующее:
CopyFile FIRST.DAT SECOND.DAT
*/
using System; using System.10;
class CopyFile {
static void Main(string[ ] args) { if (args.Length != 2) {
Console.WriteLine("Применение: CopyFile Откуда Куда"); return;
}
// Копировать файлы, try {
File.Copy(args[0], args[l]);
} catch(IOException exc) {
Console.WriteLine("Ошибка копирования файла\п" + exc.Message);
}
}
}
^Сак видите, в этой программе не нужно создавать поток типа FileStream или освобождать его ресурсы. Все это делается в методе Сору автоматически. Обратите также внимание на то, что в данной программе существующий файл не перезаписывается. Поэтому если целевой файл должен быть перезаписан, то для* этой цели лучше воспользоваться второй из упоминавшихся ранее форм метода Сору .
Применение методов Exists и GetLastAccessTime
С помощью методов класса File очень легко получить нужные сведения о файле. Рассмотрим два таких метода: Exists () и GetLastAccessTime . Метод Exists определяет, существует ли файл, а метод GetLastAccessTime возвращает дату и время последнего доступа к файлу. Ниже приведены формы объявления обоих методов.
static bool Exists(string путь)
static DateTime GetLastAccessTime(string путь)
В обоих методах путь обозначает файл, сведения о котором требуется получить. Метод Exists возвращает логическое значение true, если файл существует и доступен для вызывающего процесса. А метод GetLastAccessTime возвращает структуру DateTime, содержащую дату и время последнего доступа к файлу. (Структура