-------------------------------------
СОВЕТ
Ряд методов для работы с файлами определен также в классе Filelnfo. Этот класс отличается от класса File одним, очень важным преимуществом: для операций над файлами он предоставляет методы экземпляра и свойства, а не статические методы. Поэтому для выполнения нескольких операций над одним и тем же файлом лучше воспользоваться классом Filelnfo.
-------------------------------------
Копирование файлов с помощью метода Сору()
Ранее в этой главе демонстрировался пример программы, в которой файл копировался вручную путем чтения байтов из одного файла и записи в другой. И хотя задача копирования файлов не представляет особых трудностей, ее можно полностью автоматизировать с помощью метода Сору(), определенного в классе File. Ниже представлены две формы его объявления.
static void Copy (string имя_исходного_файла, string имя_целевого_файла)
static void Copy (string имя_исходного_файла, string имя_целевого_файла, boolean overwrite)
Метод Copy()копирует файл, на который указывает имя_исходного_файла, в файл, на который указывает имя_целевого_файла. В первой форме данный метод копирует файл только в том случае, если файл, на который указывает имя_целево-го_файла, еще не существует. А во второй форме копия заменяет и перезаписывает целевой файл, если он существует и если параметр overwrite принимает логическое значение true. Но в обоих случаям может быть сгенерировано несколько видов исключений, включая IOExceptionи FileNotFoundException.
В приведенном ниже примере программы метод Сору()применяется для копирования файла. Имена исходного и целевого файлов указываются в командной строке. Обратите внимание, насколько эта программа короче демонстрировавшейся ранее. Кроме того, она более эффективна.
/* Скопировать файл, используя метод File.Copy().
Чтобы воспользоваться этой программой, укажите имя исходного и целевого файлов. Например, чтобы скопировать файл FIRST.DAT в файл SECOND.DAT, введите в командной строке следующее:
CopyFile FIRST.DAT SECOND.DAT
*/
using System;
using System.IO;
class CopyFile {
static void Main(string[ ] args) {
if (args.Length != 2) {
Console.WriteLine("Применение: CopyFile Откуда Куда");
return;
}
// Копировать файлы,
try {
File.Copy(args[0], args[1]);
} 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, содержащую дату и время последнего доступа к файлу. (Структура DateTimeописывается далее в этой книге, но метод ToString()автоматически приводит дату и время к удобочитаемому виду.) С указанием недействительных аргументов или прав доступа при вызове обоих рассматриваемых здесь методов может быть связан целый ряд исключений, но в действительности генерируется только исключение IOException.
В приведенном ниже примере программы методы Exists()и GetLastAccessTime()демонстрируются в действии. В этой программе сначала определяется, существует ли файл под названием test.txt. Если он существует, то на экран выводит время последнего доступа к нему.
Читать дальше