Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В этом разделе мы будем в основном использовать классы FileInfo
и DirectoryInfo
, но оказывается, что многие (но не все) вызываемые методы реализуются также классами File
и Directory
(хотя в этих случаях эти методы требуют дополнительный параметр, имя пути доступа объекта файловой системы и пара методов имеют немного отличные имена). Например:
FileInfo MyFile = new FileInfo(@"C:\Program Files\My Program\ReadMe.txt");
MyFile.CopyTo(@"D:\Copies\ReadMe.txt");
Имеет тот же результат, что и:
File.Copy(@"C:\Program Files\My Program\ReadMe.txt", @"D:\Copies\ReadMe.txt");
Первый фрагмент кода будет выполняться немного дольше, так как он требует создания экземпляра объекта FileInfo
— MyFile
, но он оставляет MyFile
готовым для выполнения дальнейших действий на том же файле.
Для создания экземпляра класса FileInfo
или DirectoryInfo
в конструктор передается строка, содержащая путь доступа к соответствующей файловой системе. Мы только что проиллюстрировали процесс для файла. Для папки код выглядит аналогично:
DirectoryInfo MyFolder = new DirectoryInfo(@"C:\Program Files");
Если путь доступа представляет объект, который не существует, то исключение будет порождено не во время создания, а в тот момент, когда будет вызван метод, которому потребовался объект соответствующей файловой системы. Можно определить существует ли объект и имеет ли соответствующий тип, проверяя свойство Exists, которое реализовано для обоих этих классов:
FileInfo Test = new FileInfo(@"C:\Windows");
Console.WriteLine(Test.Exists.ToString());
Console.WriteLine(Test.CreationTime.ToString());
Отметим, что для того, чтобы это свойство возвращало true
, соответствующий объект файловой системы должен быть соответствующего типа. Другими словами, если создается экземпляр объекта FileInfo
, содержащий путь доступа папки или, если создается объект DirectoryInfo
, задающий путь доступа файла, Exists
будет иметь значение false
. С другой стороны, большинство свойств и методов этих объектов будут возвращать значение, если вообще это возможно. Но они не обязательно порождают исключение из-за того, что был вызван неправильный тип объекта, а только в том случае, если требовалось выполнить что-то реально невозможное. Например, приведенный выше фрагмент кода сначала выведет false
(так как C:\Windows
является папкой), но затем все равно правильно покажет время создания папки, так как в папке имеется эта информация. С другой стороны, если затем попробовать открыть папку, как если бы это был файл, с помощью метода FileInfo.Open()
, то будет порождено исключение.
После того, как определено, что соответствующий объект файловой системы существует, можно (если используется класс FileInfo
или DirectoryInfo
) найти о нем информацию, используя ряд свойств, включающих:
Имя | Назначение |
---|---|
CreationTime |
Время создания файла или папки. |
DirectoryName(FileInfo) , Parent(DirectoryInfo) |
Полный путь доступа содержащей папки. |
Exists |
Существует ли файл или папка. |
Extension |
Расширение файла. Возвращается пустым для папок. |
FullName |
Полное имя пути доступа файла или папки. |
LastAccessTime |
Время последнего доступа к файлу или папке. |
LastWriteTime |
Время последней модификации файла или папки. |
Name |
Имя файла или папки. |
Root |
(Только DirectoryInfo .) Корневая часть пути доступа. |
Length |
(Только FileInfo .) Возвращает размер файла в байтах. |
Можно также выполнить действия на объекте файловой системы с помощью следующих методов:
Имя | Назначение |
---|---|
Create() |
Создает папку или пустой файл с заданным именем. Для FileInfo он возвращает также объект потока, чтобы позволить записать в файл. Потоки будут рассмотрены позже. |
Delete() |
Удаляет файл или папку. Для папок существует вариант рекурсивного метода Delete . |
MoveTo() |
Перемещает и/или переименовывает файл или папку. |
CopyTo() |
(Только FileInfo .) Копирует файл. Отметим, что не существует метода копирования для папок. Если копируются все деревья каталогов, то необходимо индивидуально скопировать каждый файл и создать новые папки, соответствующие старым папкам. |
GetDirectories() |
(Только DirectoryInfo .) Возвращает массив объектов DirectoryInfo , представляющих все папки, содержащиеся в этой папке. |
GetFiles() |
(Только DirectoryInfo .) Возвращает массив объектов FileInfo , представляющих все папки, содержащиеся в этой папке. |
GetFileSystemObjects() |
(Только DirectoryInfo .) Возвращает объекты FileInfo и DirectoryInfo , представляющие все объекты, содержащиеся в этой папке, как массив ссылок FileSystemInfo . |
Отметим, что приведенные выше таблицы показывают основные свойства и методы, и не являются исчерпывающими.
В приведенных выше таблицах не перечислены большинство свойств или методов, которые позволяют записывать или читать данные в файлах. Это в действительности делается с помощью потоковых объектов, которые будут рассмотрены позже. FileInfo
реализует также ряд методов ( Open()
, OpenRead()
, OpenText()
, OpenWrite()
, Create()
, CreateText()
, которые возвращают объекты потоков для этой цели).
Интересно то, что время создания, время последнего доступа, и время последней записи являются изменяемыми:
// Test является FileInfo или DirectoryInfo. Задать время создания
// как 1 Jan 2001, 7.30 am
Test.CreationTime = new DateTime(2001, 1, 1, 7, 30, 0);
Это может показаться странным, но на самом деле достаточно полезно. Например, если имеется программа, которая эффективно модифицирует файл, просто считывая его, затем удаляя его и создавая новый файл с новым содержимым, то будет желательно изменить дату создания, чтобы противопоставить первоначальной дате создания старого файла.
Класс Path
Класс Path
не является классом, экземпляры которого будут создаваться. Скорее он предоставляет некоторые статические методы, которые облегчают работу с путями доступа. Например, предположим, что необходимо вывести имя полного пути доступа для файла ReadMe.txt
в папке C:\My Documents
. Путь доступа к файлу можно найти с помощью следующей операции:
Console.WriteLine(Path.Combine(@"C:\My Documents", "ReadMe.txt"));
Использовать класс Path значительно проще, чем пытаться справиться с символами-разделителями вручную, потому что класс Path
знает различные форматы имен путей доступа в различных операционных системах. Во время написания книги Windows являлась единственной операционной системой, поддерживаемой .NET, но если, например, .NET будет в дальнейшем перенесена на Unix, то Path
сможет справиться с путями доступа Unix, где в качестве разделителя в именах путей доступа используется /, а не \. Path.Combine
является методом этого класса, который будет вероятно использоваться чаще всего, но Path
реализует также другие методы, которые предоставляют информацию о пути доступа или требуемом для него формате.
Интервал:
Закладка: