Ввод-вывод
Ввод-вывод
В прежних версиях Visual Basic использовались разные средства обработки данных, причем выбор определялся типом источника данных. Например, обработка данных, прочитанных из файла на диске, принципиально отличалась от обработки данных, загруженных из Интернета. Эти времена остались в прошлом. Одной из целей, поставленных при проектировании .NET Framework, было обеспечение унифицированного механизма обработки данных, не зависящего от источника.
Центральное место в этом механизме занимает понятие потока (stream). Термин «поток» в данном случае происходит от выражения «поток байтов». Собственно, все данные, с которыми работает компьютер, — числа, текст и графика — сводятся к обычной последовательности байтов. Таким образом, подход, избранный проектировщиками .NET Framework, выглядит вполне логично — они разработали абстрактный класс, выполняющий обобщенные операции с данными. Наличие абстрактного класса упрощает программирование ввода-вывода в VB .NET и выявляет сходство между разнородными операциями. Короче говоря, абстрактный класс Stream, помеченный ключевым словом Mustlnherit, является идеальной базой для построения объектно-ориентированной иерархии ввода-вывода.
При работе с потоками данных, поступающих с клавиатуры, из памяти, из файла или сетевого соединения, программисты .NET используют классы, адаптированные для конкретных источников.
Но прежде, чем рассматривать эти типы потоков, необходимо познакомиться с тем, как организовано локальное хранение данных пользователем. По этой причине мы начинаем эту главу с описания операций с файлами и каталогами, а затем рассмотрим существующие разновидности потоков .NET, в том числе файловые, сетевые и объектные потоки, позволяющие сохранять объекты на диске, и другие источники данных.
Глава завершается примером использования новых серверных средств RAD (Rapid Application Development) для написания простого монитора файловой системы. Программа следит за изменениями в каталогах (такими, как создание и удаление файлов) и обрабатывает различные события, инициируемые в зависимости от типа изменений. В предыдущих версиях VB написание подобных программ было сильно затруднено тем, что программисту приходилось использовать Windows API весьма нетривиальным образом. И хотя в этой книге мы не сможем сколько-нибудь полно описать RAD-иногоументарий VB .NET, мы надеемся, что это подстегнет ваше любопытство и заставит подробнее изучить этот чрезвычайно полезный аспект VB .NET.