Wskazówki: manipulowanie plikami za pomocą metod .NET Framework (Visual Basic)
W tym przewodniku pokazano, jak otworzyć i odczytać plik przy użyciu StreamReader klasy, sprawdzić, czy plik jest uzyskiwany, wyszukiwać ciąg w pliku odczytanym z wystąpieniem StreamReader klasy i zapisywać w pliku przy użyciu StreamWriter klasy .
Uwaga
Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.
Tworzenie aplikacji
Uruchom program Visual Studio i rozpocznij projekt, tworząc formularz, którego użytkownik może użyć do zapisania w wyznaczonym pliku.
Aby utworzyć projekt
W menu Plik wybierz pozycję Nowy projekt.
W okienku Nowy projekt kliknij pozycję Aplikacja systemu Windows.
W polu Nazwa wpisz
MyDiary
i kliknij przycisk OK.Program Visual Studio dodaje projekt do Eksplorator rozwiązań, a zostanie otwarty Projektant Windows Forms.
Dodaj kontrolki w poniższej tabeli do formularza i ustaw odpowiednie wartości dla ich właściwości.
Obiekt | Właściwości | Wartość |
---|---|---|
Button | Nazwa/nazwisko Tekst |
Submit Prześlij wpis |
Button | Nazwa/nazwisko Tekst |
Clear Wyczyść wpis |
TextBox | Nazwa/nazwisko Tekst Wielowierszowego |
Entry Wprowadź coś. False |
Zapisywanie w pliku
Aby dodać możliwość zapisu do pliku za pośrednictwem aplikacji, użyj StreamWriter klasy . StreamWriter jest przeznaczony dla danych wyjściowych znaków w określonym kodowaniu, natomiast Stream klasa jest przeznaczona dla bajtowych danych wejściowych i wyjściowych. Służy StreamWriter do pisania wierszy informacji w standardowym pliku tekstowym. Aby uzyskać więcej informacji na StreamWriter temat klasy, zobacz StreamWriter.
Aby dodać funkcję pisania
W menu Widok wybierz pozycję Kod, aby otworzyć Edytor kodu.
Ponieważ aplikacja odwołuje się do przestrzeni nazw, dodaj następujące instrukcje System.IO na samym początku kodu, przed deklaracją klasy dla formularza, który rozpoczyna się .
Public Class Form1
Imports System.IO
Przed zapisaniem w pliku należy utworzyć wystąpienie StreamWriter klasy.
Z menu Widok wybierz pozycję Projektant, aby powrócić do Projektant Windows Forms. Kliknij dwukrotnie przycisk,
Submit
aby utworzyć procedurę Click obsługi zdarzeń dla tego przycisku, a następnie dodaj następujący kod.Dim fw As StreamWriter
Uwaga
Zintegrowane środowisko projektowe (IDE) programu Visual Studio powróci do Edytora kodu i umieści punkt wstawiania w programie obsługi zdarzeń, w którym należy dodać kod.
Aby zapisać w pliku, użyj Write metody StreamWriter klasy . Dodaj następujący kod bezpośrednio po pliku
Dim fw As StreamWriter
. Nie musisz martwić się, że wyjątek zostanie zgłoszony, jeśli plik nie zostanie znaleziony, ponieważ zostanie utworzony, jeśli jeszcze nie istnieje.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
Upewnij się, że użytkownik nie może przesłać pustego wpisu, dodając następujący kod bezpośrednio po
Dim ReadString As String
.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
Ponieważ jest to dziennik, użytkownik będzie chciał przypisać datę do każdego wpisu. Wstaw następujący kod po
fw = New StreamWriter("C:\MyDiary.txt", True)
ustawieniu zmiennejToday
na bieżącą datę.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Na koniec dołącz kod, aby wyczyścić element TextBox. Dodaj następujący kod do
Clear
zdarzenia przycisku Click .Entry.Text = ""
Dodawanie funkcji wyświetlania do dziennika
W tej sekcji dodasz funkcję, która wyświetla najnowszy wpis w pliku DisplayEntry
TextBox. Można również dodać element ComboBox , który wyświetla różne wpisy i z których użytkownik może wybrać wpis do wyświetlenia w obiekcie DisplayEntry
TextBox. Wystąpienie StreamReader klasy odczytuje element z klasy MyDiary.txt
. Podobnie jak klasa, StreamReader jest przeznaczona StreamWriter do użycia z plikami tekstowymi.
W tej sekcji przewodnika dodaj kontrolki w poniższej tabeli do formularza i ustaw odpowiednie wartości dla ich właściwości.
Kontrola | Właściwości | Wartości |
---|---|---|
TextBox | Nazwa/nazwisko Visible Rozmiar Wielowierszowego |
DisplayEntry False 120,60 True |
Button | Nazwa/nazwisko Tekst |
Display Wyświetl |
Button | Nazwa/nazwisko Tekst |
GetEntries Pobieranie wpisów |
ComboBox | Nazwa/nazwisko Tekst Włączono |
PickEntries Wybieranie wpisu False |
Aby wypełnić pole kombi
Służy
PickEntries
ComboBox do wyświetlania dat, w których użytkownik przesyła każdy wpis, aby użytkownik mógł wybrać wpis z określonej daty. Utwórz procedurę obsługi zdarzeń Click doGetEntries
przycisku i dodaj następujący kod.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
Aby przetestować kod, naciśnij klawisz F5, aby skompilować aplikację, a następnie kliknij pozycję Pobierz wpisy. Kliknij strzałkę listy rozwijanej w obiekcie ComboBox , aby wyświetlić daty wprowadzania.
Aby wybrać i wyświetlić poszczególne wpisy
Utwórz procedurę obsługi zdarzeń Click dla
Display
przycisku i dodaj następujący kod.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
Aby przetestować kod, naciśnij klawisz F5, aby skompilować aplikację, a następnie prześlij wpis. Kliknij pozycję Pobierz wpisy, wybierz wpis z listy ComboBox, a następnie kliknij pozycję Wyświetl. Zawartość wybranego wpisu jest wyświetlana w pliku
DisplayEntry
TextBox.
Umożliwianie użytkownikom usuwania lub modyfikowania wpisów
Na koniec możesz uwzględnić dodatkowe funkcje umożliwiające użytkownikom usuwanie lub modyfikowanie wpisu przy użyciu przycisków DeleteEntry
i EditEntry
. Oba przyciski pozostają wyłączone, chyba że zostanie wyświetlony wpis.
Dodaj kontrolki w poniższej tabeli do formularza i ustaw odpowiednie wartości dla ich właściwości.
Kontrola | Właściwości | Wartości |
---|---|---|
Button | Nazwa/nazwisko Tekst Włączono |
DeleteEntry Usuń wpis False |
Button | Nazwa/nazwisko Tekst Włączono |
EditEntry Edytuj wpis False |
Button | Nazwa/nazwisko Tekst Włączono |
SubmitEdit Prześlij edycję False |
Aby włączyć usuwanie i modyfikowanie wpisów
Dodaj następujący kod do
Display
zdarzenia przycisku Click poDisplayEntry.Text = ReadString
.DeleteEntry.enabled = True
Utwórz procedurę obsługi zdarzeń Click dla
DeleteEntry
przycisku i dodaj następujący kod.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
Gdy użytkownik wyświetli wpis,
EditEntry
przycisk zostanie włączony. Dodaj następujący kod do Click zdarzeniaDisplay
przycisku poDisplayEntry.Text = ReadString
.EditEntry.Enabled = True
Utwórz procedurę obsługi zdarzeń Click dla
EditEntry
przycisku i dodaj następujący kod.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Utwórz procedurę obsługi zdarzeń Click dla
SubmitEdit
przycisku i dodaj następujący kodDim 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
Aby przetestować kod, naciśnij klawisz F5, aby skompilować aplikację. Kliknij pozycję Pobierz wpisy, wybierz wpis, a następnie kliknij pozycję Wyświetl. Wpis pojawi się w pliku DisplayEntry
TextBox. Kliknij pozycję Edytuj wpis. Wpis pojawi się w pliku Entry
TextBox. Edytuj wpis w pliku Entry
TextBox i kliknij pozycję Prześlij edycję. Otwórz plik, MyDiary.txt
aby potwierdzić korektę. Teraz wybierz wpis i kliknij pozycję Usuń wpis. Po potwierdzeniu MessageBox żądań kliknij przycisk OK. Zamknij aplikację i otwórz, MyDiary.txt
aby potwierdzić usunięcie.