Ввод-вывод
Каталоги и файлы
В прежних версиях Visual Basic использовались разные средства обработки данных, причем выбор определялся типом источника данных. Например, обработка данных, прочитанных из файла на диске, принципиально отличалась от обработки данных, загруженных из Интернета. Эти времена остались в прошлом.Класс Path
Прежде чем рассматривать операции с каталогами и файлами, следует познакомиться с классом Path. Этот класс содержит несколько общих методов, предназначенных для обработки уточненных имен файлов [Любопытная подробность: в описании этого класса, приведением в документации VB.NET, упоминаются некоторые аспекты кросс-платформенных операций.Класс Directory
Большинство методов класса Directory идентифицирует каталоги при помощи возвращаемых строк. Поскольку все члены класса объявлены общими, при обращении к ним не обязательно указывать конкретный экземпляр.Классе File. Атрибуты файла.
Класс File, как и класс Directory, состоит из общих методов, которым при вызове обычно передается имя файла. Эти методы применяются при копировании, удалении и перемещении файлов. Основные методы класса File перечислены в табл. 9.3.Классы DirectoryInfo и FileInfo
В отличие от обобщенных классов Directory и Filе классы DirectoryInfo и FileInfо инкапсулируют конкретные (или потенциально существующие) каталоги и файлы. Чтобы использовать их, необходимо предварительно создать экземпляр класса.Рекурсивный просмотр дерева каталогов
Класс Directorylnfo удобен тем, что на его основе легко строятся обобщенные процедуры для рекурсивного перебора дерева каталогов. Как было показано в главе 4, при этом удобно использовать вспомогательную процедуру, которая, в свою очередь, вызывает другую процедуру для работы с файлами заданного каталога.Важнейшие члены классов FileSystemInfo, FileInfo и DirectoryInfo
Класс FileSystemlnfo является базовым для классов Directorylnfo и Filelnfo и содержит большую часть их общей функциональности. Перед нами хороший пример тех возможностей, которые открываются при использовании абстрактных базовых классов.Потоки данных
Как упоминалось во вступительной части, одной из целей проектирования класса System.IO.Stream было абстрагирование примитивных операций при работе с потоками байтов. В соответствий с этой концепцией каждая конкретная реализация класса Stream должна предоставить свои версии следующих методов:Запись в файл
Начнем с рассмотрения команды, часто встречающейся при работе с файловыми потоками: | Dim myFileStream As New FileStream("MyFile.txt".Чтение и запись двоичных данных: классы BinaryReader и BinaryWriter
Операции чтения и записи на уровне отдельных байтов слишком примитивны, и пользоваться ими неудобно. По этой причине в .NET Framework предусмотрены гораздо более практичные способы чтения и записи данных в файловые потоки.TextReader, TextWriter и производные классы. Объектные потоки: сохранение и восстановление объектов.
Двоичные потоки чтения/записи хорошо подходят для случаев, когда программисту точно известен порядок следования данных в двоичном формате, но прочитать полученный файл бывает непросто. Таким образом, для хранения обычного текста в файле лучше поискать другой вариант.Простая сериализация. Простое восстановление. Применение сериализации при клонировании объектов.
Прежде всего импортируйте пространство имен System.Runtime.Serialization, это сэкономит немало времени на вводе имен.Практический пример: динамический список с поддержкой сериализации
Прежде чем приводить полный код примера, мы хотим предупредить об одной потенциальной трудности, которая постоянно возникает при восстановлении сохраненных объектов, а особенно объектов, хранящихся в динамических списках.Сетевые потоки
Среди областей, в которых особенно наглядно проявляются возможности абстрактной модели потока, особое место занимает пересылка информации в Интернете. Работа с низкоуровневым кодом HTML и XML почти не требует усилий со стороны программиста.Монитор файловой системы
К числу принципиальных новшеств, отличающих VB.NET от предыдущих версий VB, относится и возможность сделать на сервере то, что в VB давно делалось для клиентов. Речь идет об инкапсуляции общей функциональности в элементах и многократном использовании кода.