VB7.3_ Do_While_edytor_StreamReader_StreamWriter
Utwórzmy aplikację umożliwiającą otwieranie pliku tekstowego (do odczytu i edycji) i zapisującą plik na dysku. Postać formularza przedstawia rys. 1.
Rys. 1. Propozycja formularza
Uwaga: Obiekt txtOkno jest TextBox’em z właściwością Multiline ustawioną na True, co pozwala na umieszczanie w nim wielu linii tekstu.
Każdy proces odczytu lub zapisu pliku składa się z 3 etapów:
(1) otwarcia pliku, (2) zapisu lub odczytu,
(3) zamknięcia pliku i zwolnienia zasobów pamięci zajmowanej przez obiekt realizujący zapis lub odczyt.
Kod aplikacji
Proszę zwrócić uwagę na komentarze zamieszczone w kodzie aplikacji.
Private Sub btnOtworz_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnOtworz.Click 'Otwarcie pliku i wczytanie go w całości jedną instrukcją
'--- ' Deklaracja obiektu typu String - ścieżka dostępu do pliku Dim sciezka As String = "C:\tkm\dane1.txt"
Try
' (1) Deklaracja obiektu StreamReader
Dim srOdczyt As IO.StreamReader = New IO.StreamReader(sciezka) ' (2) Odczyt CAŁEGO pliku i umieszczenie w txtOkno
txtOkno.Text = srOdczyt.ReadToEnd
' (3) Zamknięcie obiektu srOdczyt i zwolnienie zasobów srOdczyt.Close()
Catch ex As Exception MsgBox(ex.Message) End Try
End Sub
Private Sub btnOdczytajWierszami_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnOdczytajWierszami.Click 'Otwarcie pliku i wczytanie jego zawartości kolejno wierszami '--- ' Deklaracja obiektu typu String zawierającego ścieżkę
Dim sciezka As String = "C:\tkm\dane1.txt"
' (1) Deklaracja obiektu StreamReader i wskazanie pliku Dim srOdczyt As IO.StreamReader = New IO.StreamReader(sciezka) ' Usuwamy starą zawrtość txtOkno
txtOkno.Text = ""
' (2) Odczytanie kolejnych linii z pliku ' i "doklejenie" ich (znak & - ampersand) ' do poprzednich linii oraz dodanie na końcu
' 2 znaków "powrót karetki" - CR i "nowa liniia" - LF Do While srOdczyt.EndOfStream = False
txtOkno.Text = txtOkno.Text & srOdczyt.ReadLine & vbCrLf Loop
' (3) Zamknięcie obiektu srOdczyt i zwolnienie zasobów srOdczyt.Close()
End Sub
Private Sub btnZapisz_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnZapisz.Click 'Zapisanie zawartości txtOkno do pliku "c:\tkm\nowy.txt"
'---
' Deklaracja obiektu typu String ze ścieżką do pliku wynikowego Dim sciezka As String = "C:\tkm\dane2.txt"
' Jeśli plik wynikowy istnieje zapytaj czy go usunąć.
If IO.File.Exists(sciezka) Then
If MessageBox.Show("Plik istnieje. Czy go usunąć?", _ "Informacja", _
MessageBoxButtons.YesNo) = _
Windows.Forms.DialogResult.Yes Then IO.File.Delete(sciezka)
Else
MessageBox.Show("Plik nie został zapisany") Exit Sub
End If End If
' (1) Deklaracja obiektu StreamWriter i wskazanie pliku do zapisu Dim swZapisywacz As IO.StreamWriter = New IO.StreamWriter(sciezka)
' (2) Zapisanie zawartości txtOkno swZapisywacz.Write(txtOkno.Text)
' (3) Zamknięcie obiektu swZapisywacz i zwolnienie zasobów swZapisywacz.Close()
End Sub