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


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

Обновлен: Ноябрь 2007

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

1xac6e1y.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

  1. В меню Файл выберите Новый проект.

  2. В области Новый проект выберите Приложение Windows.

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

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

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

    Объект

    Свойства

    Значение

    Button

    Name

    Text

    Submit

    Сохранить запись

    Button

    Name

    Text

    Clear

    Очистить запись

    TextBox

    Name

    Text

    Multiline

    Entry

    Введите произвольный текст.

    False

Запись в файл

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

Добавление возможности записи

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

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

    Imports System
    Imports System.IO
    

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

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

    Dim fw As StreamWriter
    
1xac6e1y.alert_note(ru-ru,VS.90).gifПримечание.

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

  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. Добавьте следующий код к событию Click кнопки Clear.

    Entry.Text = ""
    

Добавление средств отображения в дневник

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

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

Элемент управления

Свойства

Значения

TextBox

Name

Visible

Size

Multiline

DisplayEntry

False

120,60

True

Button

Name

Text

Display

Просмотреть

Button

Name

Text

GetEntries

Показать записи

ComboBox

Name

Text

Enabled

PickEntries

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

False

Заполнение элемента управления ComboBox

  1. В элементе управления PickEntriesComboBox отображается дата создания каждой из записей, чтобы пользователь мог выбрать запись за определенную дату. Создайте обработчик событий Click кнопки GetEntries и добавьте следующий код.

    Dim fr As StreamReader
    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.

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

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

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

Элемент управления

Свойства

Значения

Button

Name

Text

Enabled

DeleteEntry

Удалить запись

False

Button

Name

Text

Enabled

EditEntry

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

False

Button

Name

Text

Enabled

SubmitEdit

Сохранить изменения

False

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

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

    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, чтобы убедиться, что запись была удалена.

См. также

Ссылки

StreamReader

StreamWriter

Другие ресурсы

Примеры для Visual Basic