Урок из серии: «Программирование на Visual Basic.NET для школьников»
В предыдущем уроке рассказывалось о создании простейшего графического редактора.
В этом уроке вы узнаете, как работать с информацией, хранящейся в текстовых файлах. Будет показано, как создать новый текстовый файл на диске и как отобразить его содержимое с помощью объекта текстового поля.
Для чтения и записи текстового файла будут использоваться новые классы StreamReader и StreamWriter из библиотеки .NET Framework.
Проект «Работа с файлами»
Задание. Создать проект, в котором можно будем вводить текст с клавиатуры и сохранять в текстовом файле на диске. После окончания ввода показать содержимое текстового файла.
Для ввода и вывода информации использовать текстовые поля.
- Запустите Visual Studio, создайте новый проект с именем Работа с файлами. Visual Studio добавит проект в Обозреватель решений, и откроется Конструктор Windows Forms.
- Добавьте в форму элементы управления Надпись (Label), текстовое поле (TextBox), две кнопки (Button).
- Измените значения свойств в соответствии с таблицей.
Объект Свойства Значение Form1 Text Работа с файлами Label1 Text Введите текст записи: TextBox1 Text
Multiline
EntryПусто
False
TrueButton1 Text Сохранить запись Button2 Text Очистить запись
Создание текстового файла
- В меню Вид выберите Код, чтобы открыть редактор кода.
- Для записи в файл предназначен класс объектов StreamWriter из пространства имен System.IO. Поэтому необходимо добавить следующие операторы в самом начале кода, перед объявлением класса формы, которое начинается с Public Class Form1.
Imports System
Imports System.IO
- Перед записью в файл необходимо создать экземпляр класса StreamWriter. Для этого достаточно в обработчике события присвоить значение соответствующей переменной.В меню Вид выберите Конструктор чтобы вернуться в окно Конструктор Windows Forms.Создайте обработчик событий Click кнопки Button1 (Сохранить) и добавьте следующий код.
Dim fw As StreamWriter Dim ReadString As String Try 'Путь к файлу указан в StreamWriter конструкторе. 'Для параметра append установлено значение True, так что файл не будет перезаписан. fw = New StreamWriter("D:\Test1.txt", True) ReadString = TextBox1.Text fw.WriteLine(ReadString) Finally 'Очистить поле TextBox1.Text = "" 'Закрыть файл. fw.Close() End Try
Не стоит беспокоиться о том, что возникнет исключение, если файла не существует, т. к. в этом случае он будет создан автоматически.
- Чтобы убедиться, что пользователь не сможет отправить пустую запись, можно добавить следующий код сразу после Dim ReadString As String.
If (TextBox1.Text = "" Or TextBox1.Text = "Введите произвольный текст.") Then TextBox1.Text = "Введите произвольный текст." Return End If
- Создайте обработчик события Click для кнопки Очистить, добавьте в него код, очищающий элемент управления TextBox.
TextBox1.Text = ""
- Чтобы проверить работоспособность кода, запустите проект. В текстовое поле введите свои фамилию и имя. Нажмите кнопку сохранить.Затем введите название проекта, нажмите сохранить. И наконец, введите текущую дату и время, нажмите Сохранить.В текстовый файл должен записаться текст, состоящий из этих трех строк. Чтение этих строк из файла выполним в следующем задании.
- Сохраните проект
Отображение текстового файла с помощью объекта текстового поля
Простейшим способом отображения в программе текстового файла является использование объекта TextBox (текстовое поле). Можно создать объекты текстового поля различного размера. Если содержимое текстового файла не помещается в текстовое поле, можно добавить к текстовому полю полосы прокрутки так, что пользователь сможет увидеть весь текст.
- Добавим в форму текстовое поле TextBox2 для отображения текстового файла и командную кнопку Button3 с надписью «Отобразить содержимое текстового файла».
- Настроим свойства в соответствии с таблицей.
Элемент управления Свойства Значения TextBox2 Visible
Multiline
ScrollBars
TextFalse
True
Both
пустойButton3 text Показать содержимое текстового файла - Добавьте программный код в обработчик события Click кнопки Button3 (Показать текстовый файл).
Dim fr As StreamReader fr = New StreamReader("D:\Test1.txt") Dim ReadString As String ReadString = "" Dim FileString As String Do 'Считываем строку из файла в переменную FileString. FileString = fr.ReadLine 'добавляем к ReadString ReadString = ReadString & ControlChars.CrLf & FileString Loop Until (FileString = Nothing) fr.Close() TextBox2.Visible = True TextBox2.Text = ReadString
- Для чтения из файла используется экземпляр класса StreamReader. Для этого в программном коде объявляется переменная fr.
- В цикле построчно считываются записи из файла в переменную FileString и добавляются в конец текста ReadString с помощью операции конкатенация.В модуле ControlChars содержатся константы, используемые в качестве управляющих символов,
CrLf соответствует Chr(13) + Chr(10) — сочетанию знаков возврата каретки и перевода строки. - Можно обойтись без цикла, если использовать метод ReadToEnd, который получает из файла весь текст, начиная с текущей позиции (начало текстового фала) и до конца этого файла. В строке кода полученное значение присваивается переменной ReadText.
ReadString = StreamToDisplay.ReadToEnd
- С помощью последних операторов закрывают текстовый файл, делают видимым текстовое поле и изменяют значение свойства Text текстового поля на значение переменной ReadText.
- Чтобы удостовериться в работоспособности кода, нажмите клавишу F5 для компиляции приложения, а затем кнопку Показать текстовый файл. В текстовом поле в центральной части окна отобразится содержимое текстового файла.
В этом уроке была показано работа с текстовыми файлами. Мы записали текстовый файл, выполнили чтение из него и отображение информации в текстовом поле. На следующем уроке начнем изучать массивы.
Следующий урок: Массивы.