Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом пошаговом руководстве показано, как открыть и прочитать файл с помощью StreamReader класса, проверить, является ли доступ к файлу, искать строку в файле, считываемой с экземпляром StreamReader класса, и записывать в файл с помощью StreamWriter класса.
Замечание
На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса Visual Studio в следующих инструкциях. Выпуск Visual Studio, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Создание приложения
Запустите Visual Studio и начните проект, создав форму, которую пользователь может использовать для записи в указанный файл.
Создание проекта
В меню Файл выберите пункт Создать проект.
В области "Создать проект " щелкните "Приложение Windows".
В поле "Имя" введите
MyDiary
и нажмите кнопку "ОК".Visual Studio добавляет проект в обозреватель решений, и откроется конструктор Windows Forms .
Добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.
Объект | Свойства | Ценность |
---|---|---|
Button |
Имя Текст |
Submit Отправка записи |
Button |
Имя Текст |
Clear Очистить запись |
TextBox |
Имя Текст Многострочный |
Entry Введите что-то. False |
Запись в файл
Чтобы добавить возможность записи в файл через приложение, используйте StreamWriter класс. StreamWriter предназначен для вывода символов в определенной кодировке, в то время как Stream класс предназначен для ввода и вывода байтов. Используется StreamWriter для записи строк информации в стандартный текстовый файл. Дополнительные сведения о StreamWriter классе см. в разделе StreamWriter.
Добавление функций записи
В меню "Вид " выберите "Код ", чтобы открыть редактор кода.
Так как приложение ссылается на System.IO пространство имен, добавьте следующие инструкции в самом начале кода перед объявлением класса для формы, которая начинается
Public Class Form1
.Imports System.IO
Перед записью в файл необходимо создать экземпляр StreamWriter класса.
В меню "Вид " выберите конструктор , чтобы вернуться в конструктор Windows Forms. Дважды щелкните
Submit
кнопку, чтобы создать Click обработчик событий для кнопки, а затем добавьте следующий код.Dim fw As StreamWriter
Замечание
Интегрированная среда разработки Visual Studio IDE возвращается в редактор кода и размещает точку вставки в обработчике событий, где следует добавить код.
Используйте метод Write класса StreamWriter, чтобы записать в файл. Добавьте следующий код непосредственно после
Dim fw As StreamWriter
. Вам не нужно беспокоиться о том, что исключение будет создано, если файл не найден, так как он будет создан, если он еще не существует.Dim ReadString As String Try 'Pass the file path and name to the StreamWriter constructor. 'Indicate that Append is True, so file will not be overwritten. fw = New StreamWriter("C:\MyDiary.txt", True) ReadString = Entry.Text fw.WriteLine(ReadString) Finally 'Close the file. fw.Close() End Try
Убедитесь, что пользователь не может отправить пустую запись, добавив следующий код непосредственно после
Dim ReadString As String
.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
Так как это дневник, пользователь хочет назначить дату каждой записи. Вставьте следующий код после
fw = New StreamWriter("C:\MyDiary.txt", True)
, чтобы установить переменнуюToday
на текущую дату.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Наконец, вложите код для очистки TextBox. Добавьте следующий код в событие
Clear
кнопки Click.Entry.Text = ""
Добавление функций отображения в дневник
В этом разделе вы добавите функцию, отображающую последнюю запись в элементе DisplayEntry
TextBox. Вы также можете добавить ComboBox, которое отображает различные записи, и из них пользователь может выбрать запись для отображения в DisplayEntry
TextBox. Экземпляр StreamReader класса считывается из MyDiary.txt
.
StreamWriter Как и класс, StreamReader предназначен для использования с текстовыми файлами.
В этом разделе пошагового руководства добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.
Контроль | Свойства | Ценности |
---|---|---|
TextBox |
Имя Видимый размера Многострочный |
DisplayEntry False 120,60 True |
Button |
Имя Текст |
Display отображение |
Button |
Имя Текст |
GetEntries Получение записей |
ComboBox |
Имя Текст Включено |
PickEntries Выберите запись False |
Заполнение комбинированного списка
Используется
PickEntries
ComboBox для отображения дат, в которых пользователь отправляет каждую запись, чтобы пользователь смог выбрать запись из определенной даты. Для кнопки Click создайте обработчик событий и затем добавьте следующий код.Dim fr As StreamReader = Nothing Dim FileString As String FileString = "" Try fr = New System.IO.StreamReader("C:\MyDiary.txt") PickEntries.Items.Clear() PickEntries.Enabled = True Do FileString = fr.ReadLine If IsDate(FileString) Then PickEntries.Items.Add(FileString) End If Loop Until (FileString Is Nothing) Finally If fr IsNot Nothing Then fr.Close() End If End Try PickEntries.Enabled = True
Чтобы проверить код, нажмите клавишу F5, чтобы скомпилировать приложение, а затем нажмите кнопку "Получить записи". Щелкните стрелку раскрывающегося списка ComboBox, чтобы отобразить даты.
Выбор и отображение отдельных записей
Click Создайте обработчик событий для кнопки
Display
и добавьте следующий код.Dim fr As StreamReader Dim ReadString As String 'Make sure ReadString begins empty. ReadString = "" Dim FileString As String fr = New StreamReader("C:\MyDiary.txt") 'If no entry has been selected, show the whole file. If PickEntries.Enabled = False Or PickEntries.SelectedText Is Nothing Then Do 'Read a line from the file into FileString. FileString = fr.ReadLine 'add it to ReadString ReadString = ReadString & ControlChars.CrLf & FileString Loop Until (FileString = Nothing) Else 'An entry has been selected, find the line that matches. Do FileString = fr.ReadLine Loop Until FileString = CStr(PickEntries.SelectedItem) FileString = CStr(PickEntries.SelectedItem) & ControlChars.CrLf ReadString = FileString & fr.ReadLine 'Read from the file until EOF or another Date is found. Do Until ((fr.Peek < 0) Or (IsDate(fr.ReadLine))) ReadString = ReadString & fr.ReadLine Loop End If fr.Close() DisplayEntry.Visible = True DisplayEntry.Text = ReadString
Чтобы протестировать код, нажмите клавишу F5, чтобы скомпилировать приложение, а затем отправьте запись. Щелкните "Получить записи", выберите запись из списка ComboBoxи нажмите кнопку "Отобразить". Содержимое выбранной записи отображается в элементе
DisplayEntry
TextBox.
Предоставление пользователям возможности удалять или изменять записи
Наконец, можно включить дополнительные функциональные возможности, позволяющие пользователям удалять или изменять запись с помощью кнопок DeleteEntry
EditEntry
. Обе кнопки остаются отключенными, если запись не отображается.
Добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.
Контроль | Свойства | Ценности |
---|---|---|
Button |
Имя Текст Включено |
DeleteEntry Удаление записи False |
Button |
Имя Текст Включено |
EditEntry Изменение записи False |
Button |
Имя Текст Включено |
SubmitEdit Отправка правки False |
Включение удаления и изменения записей
Добавьте следующий код для события кнопки
Display
, после выполнения Click.DeleteEntry.enabled = True
Click Создайте обработчик событий для кнопки
DeleteEntry
и добавьте следующий код.Dim fr As StreamReader Dim ReadString As String Dim WriteString As String Dim ConfirmDelete As MsgBoxResult fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine ' Read through the textfile Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, "") fr.Close() ' Check to make sure the user wishes to delete the entry ConfirmDelete = MsgBox("Do you really wish to delete this entry?", MsgBoxStyle.OKCancel) If ConfirmDelete = MsgBoxResult.OK Then File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() ' Reset controls on the form DisplayEntry.Text = "" PickEntries.Text = "" PickEntries.Items.Clear() PickEntries.Enabled = False DeleteEntry.Enabled = False End If
Когда пользователь отображает запись, кнопка
EditEntry
становится активной. Добавьте следующий код в событие Click кнопкиDisplay
послеDisplayEntry.Text = ReadString
.EditEntry.Enabled = True
Click Создайте обработчик событий для кнопки
EditEntry
и добавьте следующий код.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Click Создайте обработчик событий для кнопки
SubmitEdit
и добавьте следующий код.Dim fr As StreamReader Dim ReadString As String Dim WriteString As String If Entry.Text = "" Then MsgBox("Use Delete to Delete an Entry") Return End If fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, Entry.Text) fr.Close() File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() DisplayEntry.Text = Entry.Text Entry.Text = "" EditEntry.Enabled = False SubmitEdit.Enabled = False
Чтобы протестировать код, нажмите клавишу F5, чтобы скомпилировать приложение. Щелкните "Получить записи", выберите запись и нажмите кнопку "Отобразить". Запись отображается в элементе DisplayEntry
TextBox. Нажмите кнопку "Изменить запись". Запись отображается в элементе Entry
TextBox. Измените запись в Entry
TextBox меню и нажмите кнопку "Отправить правку". Откройте файл MyDiary.txt
, чтобы подтвердить исправление. Теперь выберите запись и нажмите кнопку "Удалить запись".
MessageBox После подтверждения запросов нажмите кнопку "ОК". Закройте приложение и откройте MyDiary.txt
, чтобы подтвердить удаление.