Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом пошаговом руководстве показано, как открыть и прочитать файл с помощью 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 = ""
Добавление функций отображения в дневник
В этом разделе вы добавите функцию, отображающую последнюю запись в элементе DisplayEntryTextBox. Вы также можете добавить ComboBox, которое отображает различные записи, и из них пользователь может выбрать запись для отображения в DisplayEntryTextBox. Экземпляр StreamReader класса считывается из MyDiary.txt.
StreamWriter Как и класс, StreamReader предназначен для использования с текстовыми файлами.
В этом разделе пошагового руководства добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.
| Контроль | Свойства | Ценности |
|---|---|---|
| TextBox |
Имя Видимый размера Многострочный |
DisplayEntryFalse120,60True |
| Button |
Имя Текст |
Displayотображение |
| Button |
Имя Текст |
GetEntriesПолучение записей |
| ComboBox |
Имя Текст Включено |
PickEntriesВыберите запись False |
Заполнение комбинированного списка
Используется
PickEntriesComboBox для отображения дат, в которых пользователь отправляет каждую запись, чтобы пользователь смог выбрать запись из определенной даты. Для кнопки 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и нажмите кнопку "Отобразить". Содержимое выбранной записи отображается в элементе
DisplayEntryTextBox.
Предоставление пользователям возможности удалять или изменять записи
Наконец, можно включить дополнительные функциональные возможности, позволяющие пользователям удалять или изменять запись с помощью кнопок DeleteEntryEditEntry . Обе кнопки остаются отключенными, если запись не отображается.
Добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.
| Контроль | Свойства | Ценности |
|---|---|---|
| Button |
Имя Текст Включено |
DeleteEntryУдаление записи False |
| Button |
Имя Текст Включено |
EditEntryИзменение записи False |
| Button |
Имя Текст Включено |
SubmitEditОтправка правки False |
Включение удаления и изменения записей
Добавьте следующий код для события кнопки
Display, после выполнения Click.DeleteEntry.enabled = TrueClick Создайте обработчик событий для кнопки
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 = TrueClick Создайте обработчик событий для кнопки
EditEntryи добавьте следующий код.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = TrueClick Создайте обработчик событий для кнопки
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, чтобы скомпилировать приложение. Щелкните "Получить записи", выберите запись и нажмите кнопку "Отобразить". Запись отображается в элементе DisplayEntryTextBox. Нажмите кнопку "Изменить запись". Запись отображается в элементе EntryTextBox. Измените запись в EntryTextBox меню и нажмите кнопку "Отправить правку". Откройте файл MyDiary.txt, чтобы подтвердить исправление. Теперь выберите запись и нажмите кнопку "Удалить запись".
MessageBox После подтверждения запросов нажмите кнопку "ОК". Закройте приложение и откройте MyDiary.txt, чтобы подтвердить удаление.