Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
// исключительно операционной системой.
System,
Directory,
Archive,
// Это имя зарезервировано для использования в будущем.
Device,
// Файл является 'нормальным' (если не имеет других
// установленных атрибутов),
Normal,
Temporary,
// Разреженные файлы обычно являются большими файлами,
// данные которых по большей части – нули.
SparseFile,
// Блок пользовательских данных, связанных с файлом или каталогом.
ReparsePoint,
Compressed,
Offline,
// Файл, который не будет индексирован службой индексации
// содержимого операционной системы.
NotContentIndexed,
Encrypted
}
Перечисление файлов с помощью DirectoryInfo
Вдобавок к получению базовой информации о существующем каталоге, вы можете добавить в пример несколько вызовов методов типа DirectoryInfo. Сначала используем метод GetFiles(), чтобы получить информацию обо всех файлах *.bmp, размещенных каталоге C:\Windows. Этот метод возвращает массив типов FileInfo, каждый из которых сообщает подробности о конкретном файле (подробности о самом типе FileInfo будут представлены в этой главе немного позже).
class Program {
static void Main(string[] args) {
Console.WriteLine("***** Забавы с Directory(Info) *****\n");
DirectoryInfo dir = new DireetoryInfо(@"C:\Windows");
// Получение всех файлов с расширением bmp.
FileInfo[] bitmapFiles = dir.GetFiles("*.bmp");
// Сколько их всего?
Console.WriteLine("Найдено {0} файлов *.bmp\n", bitmapFiles.Length);
// Вывод информации о файлах.
foreach (FileInfo f in bitmapFiles) {
Console.WriteLine("***************************\n");
Console.WriteLine("Имя: {0} ", f.Name);
Console.WriteLine("Размер: {0} ", f.Length);
Console.WriteLine("Создан: {0} ", f.CreationTime);
Console.WriteLine("Атрибуты: {0} ", f.Attributes);
Console.WriteLine("***************************\n");
}
}
}
Запустив это приложение, вы увидите список, подобный показанному на рис. 16.3 (ваши результаты могут быть другими!).

Рис. 16.3. Информация о файлах с точечными изображениями
Создание подкаталогов с помощью DirectoryInfo
Вы можете программно расширить структуру каталога, используя метод DirectoryInfo.CreateSubdirectory(). Этот метод с помощью одного обращения к функции позволяет создать как один подкаталог, так и множество вложенных подкаталогов. Для примера рассмотрите следующий блок программного кода, расширяющий структуру каталога C:\Windows путем создания нескольких пользовательских подкаталогов.
class Program {
static void Main(string[] args) {
Console.WriteLine("***** Забавы с Directory(Info) *****\n");
DirectoryInfo dir = new DirectoryInfo(@"C:\Windows");
…
// Создание \MyFoo в исходном каталоге.
dir.CreateSubdirectory("MyFoo");
// Создание \MyBar\MyQaaz в исходном каталоге
dir.CreateSubdirectory(@"MyBar\MyQaaz");
}
}
Если теперь проверить каталог Windows в окне программы Проводник, вы увидите там новые подкаталоги (рис. 16.4).

Рис. 16.4. Создание подкаталогов
Хотя вы и не обязаны использовать возвращаемое значение метода CreateSubdirectory(), полезно знать, что в случае успешного выполнения тип DirectoryInfo возвращает созданный элемент.
// CreateSubdirectory() возвращает объект DirectoryInfo,
// представляющий новый элемент.
DirectoryInfo d = dir.CreateSubdirectory("MyFoo");
Console.WriteLine("Создан: {0} ", d.FullName);
d = dir.CreateSubdirectory(@"MyBar\MyQaaz");
Console.WriteLine("Создан: {0} ", d.FullName);
Работа с типом Directory
Теперь, когда вы увидели тип DirectoryInfo в действии, рассмотрим тип Directory. По большей части члены Directory "дублируют" функциональные возможности, обеспечиваемые членами уровня экземпляра DirectoryInfo. Напомним, однако, что члены Directory возвращают строковые типы, а не строго типизированные объекты FileInfo/DirectoryInfo.
Чтобы проиллюстрировать некоторые функциональные возможности типа Directory, заключительная модификация этого примера отображает имена всех дисков, отображаемых на данном компьютере (для этого применяется метод Directorу.GetLogicalDrives()) и используется статический метод Directory. Delete() для удаления ранее созданных подкаталогов \MyFoo и \MyBar\MyQaaz.
class Program {
static void Main(string[] args) {
…
// Список дисков данного компьютера.
string[] drives = Directory.GetLogicalDrives();
Console.WriteLine("Вот ваши диски:");
foreach (string s in drives) Console.WriteLine(" -› {0}", s);
// Удаление созданного.
Console.WriteLine("Нажмите ‹Enter› для удаления каталогов");
try {
// Второй параметр сообщает, хотите ли вы
// уничтожить подкаталоги
Directory.Delete(@"C:\Windows\MyBar", true);
} catch (IOException e) {
Console.WriteLine(e.Message);
}
}
}
Исходный код. Проект MyDirectoryApp размещен в подкаталоге, соответствующем главе 16.
Работа с типом класса DriveInfo
В .NET 2.0 пространство имен System.IO предлагает класс с именем DriveInfo. Подобно Directory.GetLogicalDrives(), статический метод DriveInfo.GetDrives() позволяет выяснить имена дисков машины. Однако, в отличие от Directory.GetLogicalDrives(), класс DriveInfo обеспечивает множество дополнительной информации (например, информацию о типе диска, свободном пространстве, метке тома и т.д.). Рассмотрите следующий пример программного кода.
class Program {
static void Main(string[] args) {
Console.WriteLine("***** Забавы с DriveInfo *****\n'');
// Получение информации о дисках.
// Вывод информации о состоянии.
foreach(DriveInfo d in myDrives) {
Console.WriteLine("Имя: {0}", d. Name);
Console.WriteLine("Тип: {0}", d. DriveType);
// Проверка диска.
if (d.IsReady) {
Console.WriteLine("Свободно: {0}", d. TotalFreeSpace);
Console.WriteLine("Формат: {0}", d. DriveFormat);
Console.WriteLine("Метка тома: {0}\n", d. VolumeLabel);
}
}
Console.ReadLine();
}
}
На рис. 16.5 показан вывод, соответствующий состоянию моей машины.

Рис. 16.5. Сбор информации о дисках с помощью DriveInfo
Итак, мы рассмотрели некоторые возможности классов Directory.DirectoryInfo и DriveInfo. Далее вы узнаете, как создавать, открывать, закрывать и уничтожать файлы, присутствующие в каталоге.
Исходный код.Проект DriveTypeApp размещен в подкаталоге, соответствующем главе 16.
Читать дальшеИнтервал:
Закладка: