Метод Copy()
копирует файл, на который указывает 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
или освобождать его ресурсы. Все это делается в методе Сору()
автоматически. Обратите также внимание на то, что в данной программе существующий файл не перезаписывается. Поэтому если целевой файл должен быть перезаписан, то для этой цели лучше воспользоваться второй из упоминавшихся ранее форм метода Сору()
.
С помощью методов класса File
очень легко получить нужные сведения о файле. Рассмотрим два таких метода: Exists()
и GetLastAccessTime()
. Метод Exists()
определяет, существует ли файл, а метод GetLastAccessTime()
возвращает дату и время последнего доступа к файлу. Ниже приведены формы объявления обоих методов.
static bool Exists(string путь)
static DateTime GetLastAccessTime(string путь)
В обоих методах Exists()
возвращает логическое значение true
, если файл существует и доступен для вызывающего процесса. А метод GetLastAccessTime()
возвращает структуру DateTime
, содержащую дату и время последнего доступа к файлу. (Структура DateTime
описывается далее в этой книге, но метод ToString()
автоматически приводит дату и время к удобочитаемому виду.) С указанием недействительных аргументов или прав доступа при вызове обоих рассматриваемых здесь методов может быть связан целый ряд исключений, но в действительности генерируется только исключение IOException
.
В приведенном ниже примере программы методы Exists()
и GetLastAccessTime()
демонстрируются в действии. В этой программе сначала определяется, существует ли файл под названием test.txt. Если он существует, то на экран выводит время последнего доступа к нему.
// Применить методы Exists() и GetLastAccessTime() .
using System;
using System.IO;
class ExistsDemo {
static void Main() {
if(File.Exists("test.txt"))
Console.WriteLine("Файл существует. В последний"+
" раз он был доступен " + File.GetLastAccessTime("test.txt"));
else
Console.WriteLine("Файл не существует");
}
}
Кроме того, время создания файла можно выяснить, вызвав метод GetCreationTime()
, а время последней записи в файл, вызвав метод GetLastWriteTime()
. Имеются также варианты этих методов для представления данных о файле в формате всеобщего скоординированного времени (UTC). Попробуйте поэкспериментировать с ними.