Исследование текстовых файлов и обработка строк
Изучение кода программы Text Browser
- В меню Файл программы Text Browser сделайте двойной щелчок мышью на команде Открыть. В Редакторе кода появится процедура события mnuOpenItem_Click.
-
Если это необходимо, измените размер Редактора кода так, чтобы увидеть как можно больший фрагмент кода. Процедура события mnuOpenItem_Click содержит следующий код программы:
Dim AllText, LineOfText As String OpenFileDialog1.Filter = "Текстовые файлы (*.TXT)¦*.TXT" OpenFileDialog1.ShowDialog() ' отображаем диалоговое окно Open If OpenFileDialog1.FileName <> "" Then Try 'открываем файл и перехватываем все ошибки с помощью ' обработчика FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input) Do Until EOF(1) 'читаем строки из файла LineOfText = LineInput(1) 'добавляем каждую строку в переменную AllText AllText = AllText & LineOfText & vbCrLf Loop lblNote.Text = OpenFileDialog1.FileName 'обновляем метку txtNote.Text = AllText ' отображаем файл txtNote.Select(1, 0) 'удаляем выделение текста txtNote.Enabled = True 'включаем текстовый курсор mnuCloseItem.Enabled = True 'включаем команду Закрыть mnuOpenItem.Enabled = False 'отключаем команду Открыть Catch MsgBox("Ошибка открытия файла.") Finally FileClose(1) 'закрываем файл End Try End If
Эта процедура события выполняет следующие действия:
- Объявляет переменные и присваивает значение свойству Filter диалога открытия файла.
- С помощью объекта OpenFileDialog1 запрашивает у пользователя путь.
- С помощью блока кода Try...Catch перехватывает ошибки.
- С помощью функции FileOpen открывает указанный файл для ввода.
- Использует функцию LineInput для построчного копирования файла в строку с именем AllText.
- Копирует строки до тех пор, пока не достигнет конца файла ( EOF ) или пока в строке не останется больше места. В AllText есть место для очень большого файла, но если в процессе копирования произойдет ошибка, блок Catch выведет сообщение об этой ошибке.
- Отображает строку AllText в текстовом поле, удаляет выделение и включает полосы прокрутки и текстовый курсор.
-
Обновляет команды меню Файл и закрывает файл с помощью функции FileClose.
Потратьте некоторое время, чтобы понять, как работают операторы в процедуре события mnuOpenItem_Click - особенно функции FileOpen, LineInput, EOF и FileClose. Чтобы получить дополнительную информацию об этих операторах и функциях, выделите интересующее вас ключевое слово и нажмите (F1), чтобы увидеть его описание в справочной системе Visual Basic. При возникновении ошибки обработчик ошибок в этой процедуре отображает сообщение и прерывает процесс загрузки.
-
Отобразите процедуру события mnuCloseItem_Click, которая исполняется при щелчке на команде меню Закрыть. Процедура события mnuCloseItem_Click выглядит так:
txtNote.Text = "" 'очищаем текстовое поле lblNote.Text = "Загрузите текстовый файл с помощью команды Открыть." mnuCloseItem.Enabled = False 'отключаем команду Закрыть mnuOpenItem.Enabled = True 'включаем команду Открыть
Эта процедура очищает текстовое поле, обновляет метку lblNote, отключает команду Закрыть и включает команду Открыть.
Теперь вы можете использовать эту простую программу как шаблон для создания более продвинутых утилит для обработки текстовых файлов. В следующем разделе вы узнаете, как вводить в текстовое поле собственный текст, и как сохранять текст из текстового поля в файл на диске.
Использование класса StreamReader для открытия текстовых файлов
В дополнение к командам Visual Basic, которые открывают и отображают текстовые файлы, имеется новый класс StreamReader из библиотеки .NET Framework, который позволяет открывать и отображать в программах текстовые файлы. В этой книге я буду использовать для работы с текстовыми файлами как встроенные функции Visual Basic, так и класс StreamReader.
Чтобы использовать класс StreamReader, необходимо добавить в начало вашего кода следующий оператор Imports, который предоставляет доступ к классу StreamReader:
Imports System.IO
Затем, если ваша программа сдержит объект текстового поля, вы можете отобразить этот текстовый файл в этом текстовом поле с помощью следующего кода программы. (Текстовый файл, открывающийся в этом примере - это Readme.txt, и код предполагает, что в вашей форме создан объект с именем TextBox1.)
Dim StreamToDisplay As StreamReader StreamToDisplay = New StreamReader("c:\vbnet03sbs\Гл.14\readme.txt") TextBox1.Text = StreamToDisplay.ReadToEnd StreamToDisplay.Close() TextBox1.Select(0, 0)
StreamReader - это альтернативный по отношению к использованию функций Visual Basic способ открывать текстовый файл, предоставляемый .NET Framework. В этом примере использования StreamReader я объявляю переменную StreamToDisplay типа StreamReader, в которой хранится содержимое текстового файла, а затем указываю правильный путь к файлу, который я хочу открыть. Затем с помощью метода ReadToEnd, который получает из файла весь текст, начиная с текущей позиции (начало текстового фала) и до конца этого файла, я считываю содержимое текстового файла в переменную StreamToDisplay, и присваиваю ее свойству Text текстового поля. Последние операторы закрывают текстовый файл и используют метод Select для удаления выделения в текстовом поле.
Вы будете использовать эту запись StreamReader в "Управление формами Windows" в качестве альтернативы для встроенных в Visual Basic функций для работы с файлами.
Создание нового текстового файла на диске
Чтобы создать на диске новый текстовый файл с помощью Visual Basic, используется множество функций и ключевых слов, которые вы уже применяли в последнем примере. Создание новых файлов на диске и сохранение в них данных полезно, если вы планируете создавать собственные отчеты или журналы, сохранять важные вычисления или значения или создавать специальный текстовый процессор или текстовый редактор. Вот обзор шагов, которые вы должны сделать в такой программе:
- Получите ввод данных от пользователя, выполните математические вычисления или сделайте и то, и другое.
- Присвойте результаты обработки одной или нескольким переменным. Например, можно присвоить содержимое текстового поля строковой переменной с именем InputForFile.
- С помощью элемента управления SaveFileDialog запросите у пользователя путь к файлу. Для отображения этого диалогового окна вы используете метод ShowDialog.
- Используйте полученный из диалогового окна путь для открытия файла для записи.
- Для сохранения одного или нескольких значений в открытый файл используйте функцию PrintLine.
- Закончив запись, закройте файл с помощью функции FileClose.
В следующем упражнении демонстрируется, как можно использовать элементы управления TextBox и SaveFileDialog для построения простой утилиты создания заметок. Эта программа использует для открывания файла функцию FileOpen, для сохранения в нем данных - функцию PrintLine, а для закрытия файла - функцию FileClose. Вы можете использовать этот инструмент дома или на работе для создания заметок, а затем привязки их к текущей дате.