Справочник от Автор24
Поделись лекцией за скидку на Автор24

Работа с файлами

  • 👀 451 просмотр
  • 📌 404 загрузки
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Работа с файлами» doc
Последовательность работы с файлами При работе на компьютере часто приходится обращаться к данным, хранящимся на жёстком диске или флэш-памяти. В Visual Basic'е имеется ряд специальных команд, позволяющих создаваемой программе считывать, записывать и обрабатывать дисковые файлы. Использование в программе файлов требует следующей последовательности действий: 1.Создать канал доступа к файлу; 2.Открыть файл для чтения, записи или добавления в него данных; 3.Прочитать данные либо записать данные в файл; 4.Закрыть файл. Изложим подробно перечисленные действия по порядку. Канал связи с файлом Прежде, чем программа начнёт обмениваться информацией с файлом, необходимо связать программу с конкретным файлом. Для этого следует открыть канал ввода/вывода, соединяющий программу и файл. Каждый открытый файл имеет собственный канал, по которому из файла считываются или в него записываются данные. У канала имеется номер – целое число от 1 до 511. При общении с файлом, программа адресуется к нему не по имени, а по номеру канала, открытому для файла. Операционная система должна иметь сведения о наличии свободных каналов, которые можно использовать для доступа к файлу. Если свободных каналов нет, т.е. открыто максимально допустимое количество файлов, может произойти сбой в работе программы. Для поиска свободного канала можно использовать функцию FreeFile( ), которая выдаёт ближайший номер свободного канала. Например: F= FreeFile( ) В этом примере в переменную F записывается целое число, соответствующее номеру свободного канала. Открытие файла Прежде, чем начать запись информации в файл либо читать данные из файла, этот файл надо открыть. Файл открывают либо для чтения, либо для записи, либо для добавления в него данных (дозаписи). Необходимо выбрать строго одно из трёх, нельзя одновременно читать из файла и записывать в него. Команда в общем виде Назначение команды OPEN Имя файла FOR INPUT AS Номер канала Открыть файл для чтения OPEN Имя файла FOR OUTPUT AS Номер канала Открыть файл для записи OPEN Имя файла FOR APPEND AS Номер канала Открыть файл для дозаписи Пример: OPEN "C\Мои документы\File1.txt" FOR INPUT AS F1 OPEN "C:\Visual Basic\Data.txt" FOR OUTPUT AS F2 OPEN "C:\MeFile.txt" FOR APPEND AS F3 Как видно, в конце команды указывается номер канала, создаваемого для открываемого файла. После команды OPEN программа будет обращаться в своих командах к файлу не по его имени, хранящемся в каталоге диска, а по номеру канала; номер канала становится синонимом имени файла. Рассмотрим механизм открытия файла. Для удобства изучения команд OPEN FOR INPUT, OPEN FOR OUTPUT и OPEN FOR APPEND введём понятие "указатель". Под указателем будем понимать некую воображаемую стрелку, способную перемещаться вдоль файла. Если указатель установлен на каком-либо элементе файла, то этот элемент в настоящий момент доступен для чтения (в случае, если файл был открыт для чтения). Если файл был открыт для записи или дозаписи, то указатель указывает на то место файла, куда будет записан новый элемент. После выполнения команды OPEN Имя файла FOR INPUT AS Номер канала, компьютер переходит в начальное состояние режима чтения, в результате чего указатель устанавливается на первую позицию файла и файл готов к чтению из него: F: Элемент 1 Элемент 2 *** Элемент i *** ↑ Указатель После выполнения команды OPEN Имя файла FOR OUTPUT AS Номер канала файл переходит в начальную стадию режима записи, указатель помещается в начало файла: F: ↑ Указатель Если файл уже существует и в него были записаны ранее какие-либо данные, то они становятся недоступны и будут забиваться новыми данными. Если файла с указанным именем на диске нет, то команда OPEN его создаст. После выполнения команды OPEN Имя файла FOR APPEND AS Номер канала файл открывается для дозаписи – указатель помещается в конец файла, а компьютер готов к вводу в файл дополнительных элементов: F: Элемент 1 Элемент 2 *** Элемент n ↑ Указатель Файл, открываемый для дозаписи, должен существовать на диске. Если указываемого в команде OPEN FOR APPEND файла на диске нет, произойдёт сбой в работе программы. Чтение данных из файла Чтение данных из файла осуществляется командой LINE INPUT #Номер канала, Переменная . Эта команда считывает из файла очередную строку и записывает её в переменную строкового типа (string). Повторное обращение к этой команде сопровождается чтением из файла следующей строки. Пример: С помощью программы Блокнот создать в корневом каталоге жёсткого диска файл "MyFile.txt", в котором записать четыре строки: Первая строка Вторая строка Третья строка Четвёртая строка Составить программу, считывающую содержимое этого файла и выводящую его на экран. Создадим экранную форму, в которой разместим элементы управления: надпись Label1 и две кнопки ("Читать"- Command1 и "Выйти" – Command2). В обработчике нажатия кнопки Command1 запишем следующее: Sub Command1_Click() Dim F As Byte, S, S1, S2, S3, S4 As String F = FreeFile( ) Open "C:\MyFile.txt" For Input As F Line Input #F, S1 Line Input #F, S2 Line Input #F, S3 Line Input #F, S4 S = S1 + vbCrLf + S2 + vbCrLf + S3 + vbCrLf + S4 Label1.Caption = S End Sub Запустив программу и нажав кнопку "Читать", получим: Рис. Пример программы чтения из текстового файла Анализ текста программы наводит на мысль о целесообразности использования команды Line Input# в цикле: Dim F, N As Byte, S, S1 As String F = FreeFile( ) Open "C:\MyFile.txt" For Input As F S = "" N = 0 Do Until EOF(F) Line Input #F, S1 S = S + S1 + vbCrLf N = N + 1 Loop Label1.Caption = S + "В файле оказалось " + Str(N) + " строк" Выполнение такой программы даст следующий результат: Рис.Пример программы, читающей из файла строки в цикле В представленном выше тексте программы, в заголовке цикла используется функция EOF(F), назначение которой- проверка окончания файла. Если указатель файла достигнет невидимого управляющего символа с кодом #27 (этот символ называется End Of File, сокращённо- EOF), функция EOF( ) выдаст значение True. Символ #27 записывается в каждый файл автоматически и помещается, естественно, в самом конце файла, как его граница. Если при чтении из файла символ #27 ещё не достигнут, функция EOF( ) выдаст значение False. В нашем примере цикл будет повторяться до тех пор, пока не будут считаны все строки из файла и указатель не "уткнётся" в признак конца файла #27. Следует отметить, что функция EOF( ) – параметрическая, т.е. в ней в круглых скобках следует указывать аргумент – номер канала связи программы с файлом: EOF(F). Мы выяснили, что команда Line Input # предназначена для построчного чтения из файла, эта команда читает сразу всю строку. Между тем встречаются случаи, когда в одной строке записано сразу несколько значений, например: Фамилия, Имя, Отчество. Чтобы записать каждое из этих значений в соответствующие переменные, надо считать из файла строку и выделить из неё фрагменты с помощью известных нам строковых функций LEFT( ), RIGHT( ), MID( ), полученные фрагменты строки записать затем в соответствующие переменные. Составим программу, в которой чтение из файла осуществляется фрагментами. Пример: С помощью программы Блокнот создать в корневом каталоге жёсткого диска файл "MyFile2.txt", в котором записать: Название товара, его цену и количество товара на складе. Телевизор 15000 20 Составить программу, считывающую содержимое этого файла и выводящую на экран стоимость всего товара на складе (произведение цены и количества). Создадим экранную форму, в которой разместим элементы управления: надпись Label1 и две кнопки ("Вычислить"- Command1 и "Выйти" – Command2). В обработчике нажатия кнопки Command1 запишем следующее: Dim F, N As Byte, S, Tovar As String Dim Price, Stoim As Single F = FreeFile() Open "C:\MyFile2.txt" For Input As F Line Input #F, S Tovar = Left(S, 10) Price = Val(Mid(S, 12, 5)) N = Val(Right(S, 3)) Stoim = Price * N Label1.Caption = Tovar + " " + Str(Stoim) + " руб." Нажатие кнопки "Вычислить" даст такой результат: Рис. Результат работы программы, читающей из файла строку фрагментами Последняя программа очень примитивна - действительно, обрабатывать содержимое файла, состоящего всего из одной строки, не эффективно. Попробуем создать похожий файл, но состоящий из нескольких строк. Естественно, читать из него данные придётся в цикле, и запоминать читаемую информацию будем не в обычные переменные, а в массивы. Пример: создать в корневом каталоге жёсткого диска файл "MyFile3.txt", в котором записать несколько строк. В каждой строке записать направление железнодорожной кривой (лево, право), радиус кривой и угол поворота. Составить программу, читающую из файла информацию и выводящую на экран параметры кривых (радиус, угол, длину кривой, тангенс кривой). Dim i, N, F As Byte, S As String Dim Mas1(1 To 50) As String * 5 Dim Mas2(1 To 50, 1 To 4) As Single F = FreeFile() Open "C:\MyFile3.txt" For Input As F i = 0 Do Until EOF(F) i = i + 1 Line Input #F, S Mas1(i) = Left(S, 5) Mas2(i, 1) = Val(Mid(S, 7, 4)) Mas2(i, 2) = Val(Right(S, 3)) Loop N = i For i = 1 To N Mas2(i, 3) = Mas2(i, 1) * Mas2(i, 2) / 57.296 Mas2(i, 4) = Mas2(i, 1) * Tan(Mas2(i, 2) / 57.296 / 2) Next i S = "Направление Радиус Угол Длина Тангенс" + vbCrLf For i = 1 To N S = S + " " + Mas1(i) + " " + Str(Mas2(i, 1)) + _ " " + Str(Mas2(i, 2)) + " " + Str(Round(Mas2(i, 3), 2)) + " " + _ Str(Round(Mas2(i, 4), 2)) + vbCrLf Next i Label1.Caption = S Результат работы программы выглядит так: Рис. Пример программы, использующей массивы, заполненные из файла
«Работа с файлами» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot