ПОНЯТНО О Visual Basic NET (том 3)




Типизированные файлы «Старый» доступ к файлам - часть 5


    End Sub

Пояснения: Пусть мы хотим исправить в файле запись №2.  Вводим число 2 в поле TextBox1. В остальные четыре текстовые поля вводим вручную информацию о спортсмене, затем нажимаем кнопку – и информация оказывается в файле в записи №2.

Функции  CInt,  CDate,  CBool  на всякий случай преобразуют то, что мы ввели, в нужные типы. В процедуре FilePut мы указали третий параметр – Номер, поэтому она записывает значение  переменной Спортсмен в файл в запись с номером 2. Обратите внимание – на запись 1 время не тратится, компьютер сразу «прыгает» к записи 2. То, что было записано в файле в записи 2, стирается, и на это место пишется новая информация.

Совет: Удобнее исправлять запись о конкретном спортсмене так: Пусть спортсмен №2 похудел и нам нужно исправить в файле только его вес.  Вводим число 2 в поле TextBox1. Щелкаем по 3 кнопке. В текстовых полях появляется информация о спортсмене №2. Исправляем только вес и щелкаем по 4 кнопке. Дело сделано.

Файлы с произвольным доступом. Мы видим, что информация в типизированных файлах записывается упорядоченно и регулярно, благодаря чему к ней возможен более гибкий и быстрый доступ, чем в текстовых файлах. Эти файлы хорошо приспособлены для хранения массивов простых данных и структур. Здесь уже нет необходимости читать вхолостую начало файла для того, чтобы прочесть что-то в его середине или перезаписывать весь файл, если нужно исправить его маленькую частицу. Поэтому в отличие от файлов с последовательным доступом типизированные файлы причисляют к файлам с произвольным доступом.

Методы «старого» доступа. Вы вполне можете столкнуться с необходимостью прочесть код, в котором для работы с файлами любого вида используются методы модуля FileSystem пространства имен Microsoft.VisualBasic. Поэтому я для справки привожу примеры обращения к этим методам:

FileOpen (1, файл, OpenMode.Random)

Открыть файл для типизированного доступа

FileOpen (1, файл, OpenMode.Binary)

Открыть файл для нетипизированного доступа (о нем ниже)

FileOpen (1, файл, OpenMode.Input)

Открыть текстовый файл для чтения

FileOpen (1, файл, OpenMode.Output)

Открыть текстовый файл для записи

FileOpen (1, файл, OpenMode.Append)

Открыть текстовый файл для дозаписи

FileClose (1)

Закрыть файл, открытый методом FileOpen

FilePut (1, переменная, номер)

Записать переменную в файл с произвольным доступом на место, указанное номером

FileGet (1, переменная, номер)

Прочесть переменную из файла с произвольным доступом с места, указанного номером

Seek (1)

На какой позиции в файле я нахожусь?

Seek (1, позиция)

Переместить головку в файле на указанную позицию

Write (1, a, b, c, …)

Записывает в текстовый файл значения переменных a, b, c и так далее. Переменные эти могут иметь разные простые типы. Интересно, что в файле они тоже отделяются друг от друга запятыми, а строковые данные, например, берутся в двойные кавычки.

WriteLine (1, a, b, c, …)

То же, что Write, но следующая запись начнется уже с новой строки

Input (1, a)

Обычно используется для правильного чтения из текстового файла того, что туда понаписали Write и WriteLine. За один раз читает одно очередное данное и сдвигает головку до следующей запятой или символа возврата каретки..

Print (1, a, b, c, …)

Записывает в текстовый файл значения переменных a, b, c и так далее. Переменные эти могут иметь разные простые типы.

PrintLine (1, a, b, c, …)

То же, что Print, но следующая запись начнется уже с новой строки

LineInput (1)

Считывает из текстового файла очередную строку, какие бы и сколько бы данных в этой строке ни находилось. Обычно используется для чтения того, что записано методами Print и PrintLine.

InputString (1, число символов)

Считывает из файла указанное количество символов

EOF (1)

Правда ли, что достигнут конец текстового или типизированного файла?

LOF (1)

Длина открытого файла в байтах

Если хотите, можете попробовать, используя приведенные в таблице примеры, поработать с текстовыми файлами. Но имейте в виду, что о многих тонкостях обращения к файлам и об ограничениях на использование перечисленных методов я не упоминал.




Содержание  Назад  Вперед