Поделиться через


Пошаговое руководство. Управление файлами с помощью методов .NET Framework (Visual Basic)

В этом пошаговом руководстве показано, как открыть и прочитать файл с помощью StreamReader класса, проверить, является ли доступ к файлу, искать строку в файле, считываемой с экземпляром StreamReader класса, и записывать в файл с помощью StreamWriter класса.

Замечание

На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса Visual Studio в следующих инструкциях. Выпуск Visual Studio, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.

Создание приложения

Запустите Visual Studio и начните проект, создав форму, которую пользователь может использовать для записи в указанный файл.

Создание проекта

  1. В меню Файл выберите пункт Создать проект.

  2. В области "Создать проект " щелкните "Приложение Windows".

  3. В поле "Имя" введите MyDiary и нажмите кнопку "ОК".

    Visual Studio добавляет проект в обозреватель решений, и откроется конструктор Windows Forms .

  4. Добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.

Объект Свойства Ценность
Button Имя

Текст
Submit

Отправка записи
Button Имя

Текст
Clear

Очистить запись
TextBox Имя

Текст

Многострочный
Entry

Введите что-то.

False

Запись в файл

Чтобы добавить возможность записи в файл через приложение, используйте StreamWriter класс. StreamWriter предназначен для вывода символов в определенной кодировке, в то время как Stream класс предназначен для ввода и вывода байтов. Используется StreamWriter для записи строк информации в стандартный текстовый файл. Дополнительные сведения о StreamWriter классе см. в разделе StreamWriter.

Добавление функций записи

  1. В меню "Вид " выберите "Код ", чтобы открыть редактор кода.

  2. Так как приложение ссылается на System.IO пространство имен, добавьте следующие инструкции в самом начале кода перед объявлением класса для формы, которая начинается Public Class Form1.

    Imports System.IO
    

    Перед записью в файл необходимо создать экземпляр StreamWriter класса.

  3. В меню "Вид " выберите конструктор , чтобы вернуться в конструктор Windows Forms. Дважды щелкните Submit кнопку, чтобы создать Click обработчик событий для кнопки, а затем добавьте следующий код.

    Dim fw As StreamWriter
    

Замечание

Интегрированная среда разработки Visual Studio IDE возвращается в редактор кода и размещает точку вставки в обработчике событий, где следует добавить код.

  1. Используйте метод 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
    
  2. Убедитесь, что пользователь не может отправить пустую запись, добавив следующий код непосредственно после Dim ReadString As String.

    If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then
        Entry.Text = "Please enter something."
        Return
    End If
    
  3. Так как это дневник, пользователь хочет назначить дату каждой записи. Вставьте следующий код после fw = New StreamWriter("C:\MyDiary.txt", True), чтобы установить переменную Today на текущую дату.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Наконец, вложите код для очистки TextBox. Добавьте следующий код в событие Clear кнопки Click.

    Entry.Text = ""
    

Добавление функций отображения в дневник

В этом разделе вы добавите функцию, отображающую последнюю запись в элементе DisplayEntryTextBox. Вы также можете добавить ComboBox, которое отображает различные записи, и из них пользователь может выбрать запись для отображения в DisplayEntryTextBox. Экземпляр StreamReader класса считывается из MyDiary.txt. StreamWriter Как и класс, StreamReader предназначен для использования с текстовыми файлами.

В этом разделе пошагового руководства добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.

Контроль Свойства Ценности
TextBox Имя

Видимый

размера

Многострочный
DisplayEntry

False

120,60

True
Button Имя

Текст
Display

отображение
Button Имя

Текст
GetEntries

Получение записей
ComboBox Имя

Текст

Включено
PickEntries

Выберите запись

False

Заполнение комбинированного списка

  1. Используется 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
    
  2. Чтобы проверить код, нажмите клавишу F5, чтобы скомпилировать приложение, а затем нажмите кнопку "Получить записи". Щелкните стрелку раскрывающегося списка ComboBox, чтобы отобразить даты.

Выбор и отображение отдельных записей

  1. 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
    
  2. Чтобы протестировать код, нажмите клавишу F5, чтобы скомпилировать приложение, а затем отправьте запись. Щелкните "Получить записи", выберите запись из списка ComboBoxи нажмите кнопку "Отобразить". Содержимое выбранной записи отображается в элементе DisplayEntryTextBox.

Предоставление пользователям возможности удалять или изменять записи

Наконец, можно включить дополнительные функциональные возможности, позволяющие пользователям удалять или изменять запись с помощью кнопок DeleteEntryEditEntry . Обе кнопки остаются отключенными, если запись не отображается.

Добавьте элементы управления в следующую таблицу в форму и задайте соответствующие значения для их свойств.

Контроль Свойства Ценности
Button Имя

Текст

Включено
DeleteEntry

Удаление записи

False
Button Имя

Текст

Включено
EditEntry

Изменение записи

False
Button Имя

Текст

Включено
SubmitEdit

Отправка правки

False

Включение удаления и изменения записей

  1. Добавьте следующий код для события кнопки Display, после выполнения Click.

    DeleteEntry.enabled = True
    
  2. 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
    
  3. Когда пользователь отображает запись, кнопка EditEntry становится активной. Добавьте следующий код в событие Click кнопки Display после DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Click Создайте обработчик событий для кнопки EditEntry и добавьте следующий код.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. 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, чтобы скомпилировать приложение. Щелкните "Получить записи", выберите запись и нажмите кнопку "Отобразить". Запись отображается в элементе DisplayEntryTextBox. Нажмите кнопку "Изменить запись". Запись отображается в элементе EntryTextBox. Измените запись в EntryTextBox меню и нажмите кнопку "Отправить правку". Откройте файл MyDiary.txt, чтобы подтвердить исправление. Теперь выберите запись и нажмите кнопку "Удалить запись". MessageBox После подтверждения запросов нажмите кнопку "ОК". Закройте приложение и откройте MyDiary.txt, чтобы подтвердить удаление.

См. также