Pliki

Transkrypt

Pliki
Microsoft Visual Basic
Praca z plikami. Okna OpenFileDialog i SaveFileDialog, obiekty StreamReader i
StreamWriter, odczyt i zapis (wierszami) całej zawartości pliku, przykład 1, wersja 1
Public Class Form1
'
'
Odczyt i zapis wierszami całej zawartości pliku z wykorzystaniem pola listy.
'
Private Sub btnCzytaj_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnCzytaj.Click
'
'
Otwarcie okna poszukiwania pliku do odczytu
dlgOtworz.ShowDialog()
End Sub
Private Sub dlgOtworz_FileOk(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles dlgOtworz.FileOk
'
'
Odczyt zawartości pliku do pola listy, wierszami, do końca pliku.
Dim srCzytnik As System.IO.StreamReader
Dim strKom, strTyt As String
Dim strWiersz As String
Try
'
'
Otwarcie do odczytu pliku wybranego w oknie dialogowym
srCzytnik = New System.IO.StreamReader(dlgOtworz.FileName)
'
'
Pokazanie ścieżki dostępu do pliku
txtSciezka.Text = dlgOtworz.FileName
'
'
Odczyt całej zawartości pliku wierszami i dodanie
'
każdego wiersza do listy jako jej nowego elementu
Do While Not srCzytnik.EndOfStream
strWiersz = srCzytnik.ReadLine
lstPlik.Items.Add(strWiersz)
Loop
'
'
Zwolnienie zasobów
srCzytnik.Close()
srCzytnik.Dispose()
Catch ex As Exception
strKom = ex.Message
strTyt = "Odczyt z pliku " & dlgZapisz.FileName
1
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnWyczysc_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnWyczysc.Click
'
'
Czyszczenie listy i pola tekstowego ścieżki do pliku
lstPlik.Items.Clear()
txtSciezka.Clear()
End Sub
Private Sub btnZapisz_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnZapisz.Click
'
'
Otwarcie okna dialogowego, w którym zostanie określone,
'
do którego pliku ma zostać zapisana zawartość listy
dlgZapisz.ShowDialog()
End Sub
Private Sub dlgZapisz_FileOk(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles dlgZapisz.FileOk
'
'
Zapisywanie w kolejnych rekordach pliku zawartości listy,
'
zgodnie z ustawieniem pola trybu (dopisywanie/zastępowanie)
Dim strElement As String
Dim strKom, strTyt As String
Dim swPisak As System.IO.StreamWriter
'
Try
'
'
Otwarcie pliku do zapisu
swPisak = New System.IO.StreamWriter(dlgZapisz.FileName, _
cbDopisz.Checked)
'
'
Pokazanie ścieżki dostępu do pliku
txtSciezka.Text = dlgOtworz.FileName
'
'
Wpisanie do pliku całej zawartości listy
For Each strElement In lstPlik.Items
swPisak.WriteLine(strElement)
Next
'
'
Zwolnienie zasobów i wyczyszczenie pola nowego elementu listy
txtNowyWiersz.Clear()
'
swPisak.Close()
swPisak.Dispose()
Catch ex As Exception
strKom = ex.Message
strTyt = "Zapis do pliku " & dlgZapisz.FileName
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnDodajWiersz_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnDodajWiersz.Click
'
'
Dodanie do listy nowego wiersza i wyczyszczenie pola ścieżki do pliku
txtSciezka.Clear()
lstPlik.Items.Add(txtNowyWiersz.Text)
End Sub
End Class
2
Microsoft Visual Basic
Praca z plikami. Okna OpenFileDialog i SaveFileDialog, obiekty StreamReader i
StreamWriter, odczyt i zapis (wierszami) całej zawartości pliku, przykład 1, wersja 2
Public Class frmCzytanieZapis
'
'
Odczyt i zapis wierszami całej zawartości pliku
'
z wykorzystaniem wielowierszowgo pola tekstowego.
Private Sub btnWyczysc_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnWyczysc.Click
'
'
Czyszczenie pola zawartości i pola tekstowego ścieżki do pliku
txtZawartosc.Clear()
txtSciezka.Clear()
End Sub
Private Sub btnCzytaj_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnCzytaj.Click
'
'
Otwarcie okna dialogowego wyboru odczytywanego pliku
dlgOtworz.ShowDialog()
End Sub
Private Sub dlgOtworz_FileOk(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles dlgOtworz.FileOk
'
'
Odczyt zawartości pliku do wielowierszowego pola tekstowego
Dim srCzytnik As System.IO.StreamReader
Dim Wiersz As String
Dim Kom, Tyt As String
'
Try
srCzytnik = New System.IO.StreamReader(dlgOtworz.FileName)
'
txtSciezka.Text = dlgOtworz.FileName
'
Do While Not srCzytnik.EndOfStream
3
Wiersz = srCzytnik.ReadLine
'
'
Jeżeli pole jest puste, pierwszy wiersz pliku
'
będzie wpisany do jego pierwszego wiersza
If txtZawartosc.Text = "" Then
txtZawartosc.Text = Wiersz
Else
'
'
Jeżeli w polu już coś zapisano, każdy przeczytany
'
wiersz pliku musi być zapisany w nowym wierszu
'
pola (przejście do nowego wiersza: vbCrLf)
txtZawartosc.Text = txtZawartosc.Text & vbCrLf & Wiersz
End If
Loop
srCzytnik.Close()
srCzytnik.Dispose()
Catch ex As Exception
Kom = ex.Message
Tyt = "Czytanie zawartości pliku"
MessageBox.Show(Kom, Tyt, MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnZapisz_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnZapisz.Click
'
'
Otwarcie okna wyboru pliku do zapisu
dlgZapisz.ShowDialog()
End Sub
Private Sub dlgZapisz_FileOk(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles dlgZapisz.FileOk
'
'
Zapis zawartości wielowierszowego pola tekstowego do pliku
Dim swPisak As System.IO.StreamWriter
Dim Kom, Tyt As String
'
Try
swPisak = New System.IO.StreamWriter(dlgZapisz.FileName, _
cbDopisz.Checked)
txtSciezka.Text = dlgZapisz.FileName
swPisak.WriteLine(txtZawartosc.Text)
'
swPisak.Close()
swPisak.Dispose()
Catch ex As Exception
Kom = ex.Message
Tyt = "Zapis do pliku"
MessageBox.Show(Kom, Tyt, MessageBoxButtons.OK, _
MessageBoxIcon.Error)
End Try
End Sub
End Class
4
Microsoft Visual Basic
Praca z plikami. Okna OpenFileDialog i SaveFileDialog, obiekty StreamReader
i StreamWriter, przykład 2
Public Class Form1
'
'
Rozwiązywanie równania kwadratowego przy użyciu współczynników zapisanych w kolejnych
'
wierszach pliku tekstowego oraz zapisywanie rozwiązania do pliku tekstowego.
'
Private Sub btnWczytaj_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnWczytaj.Click
'
'
Otwarcie okna wyboru pliku ze współczynnikami równania
dlgOdczyt.ShowDialog()
End Sub
Private Sub dlgOdczyt_FileOk(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles dlgOdczyt.FileOk
'
'
Otwarcie pliku ze współczynnikami równania
'
i wczytanie ich do pól tekstowych formularza
Dim strKom, strTyt As String
Dim srDane As System.IO.StreamReader
Try
srDane = New System.IO.StreamReader(dlgOdczyt.FileName)
txtA.Text = srDane.ReadLine
txtB.Text = srDane.ReadLine
txtC.Text = srDane.ReadLine
'
'
Zamknięcie i usunięcie zbędnego obiektu StreamReader
srDane.Close()
srDane.Dispose()
'
'
Wyczyszczenie pól tekstowych pierwiastków
txtX1.Clear()
txtX2.Clear()
Catch ex As Exception
strKom = ex.Message
strTyt = "Błąd wykonania nr " & Err.Number
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnRozwiaz_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnRozwiaz.Click
'
'
Rozwiązanie równania kwadratowego i wpisanie pierwiastków
'
do pól tekstowych formularza
Dim sngA, sngB, sngC As Single
Dim delta, X1, X2 As Single
Dim strKom, strTyt As String
'
Try
sngA = CSng(txtA.Text)
If sngA = 0 Then
strKom = "Współczynnik A nie może być zerem"
strTyt = "Błędne dane"
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, _
5
MessageBoxIcon.Warning)
Exit Sub
End If
sngB = CSng(txtB.Text)
sngC = CSng(txtC.Text)
'
delta = sngB ^ 2 - 4 * sngA * sngC
If delta >= 0 Then
X1 = (-sngB - Math.Sqrt(delta)) / (2 * sngA)
X2 = (-sngB + Math.Sqrt(delta)) / (2 * sngA)
txtX1.Text = X1.ToString
txtX2.Text = X2.ToString
Else
strKom = "Brak rozwiązań w dziedzinie rzeczywistej"
strTyt = "Delta < 0"
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End If
Catch ex As Exception
strKom = ex.Message
strTyt = "Błąd wykonania nr " & Err.Number
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub btnZapisz_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnZapisz.Click
'
'
Otwarcie okna wyboru pliku do zapisu (tylko wtedy, gdy uzyskano
'
rozwiązanie i zapisano je do pól tekstowych formularza)
Dim strKom, strTyt As String
If txtX1.Text <> "" Then
dlgZapis.ShowDialog()
Else
strKom = "Brak znalezionego rozwiązania równania"
strTyt = "Brak danych do zapisu"
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, _
MessageBoxIcon.Asterisk)
End If
End Sub
Private Sub dlgZapis_FileOk(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) Handles dlgZapis.FileOk
'
'
Zapis rozwiązania do pliku (z zachowywaniem dotychczasowej
'
zawartości pliku, o ile istnieje)
Dim swZapis As System.IO.StreamWriter
Dim strWierszZapisu As String
Dim strKom, strTyt As String
'
Try
swZapis = New System.IO.StreamWriter(dlgZapis.FileName, True)
'
strWierszZapisu = "Równanie kwadratowe " & txtA.Text & "*x^2 + " & _
txtB.Text & "*x + " & txtC.Text & " = 0 "
swZapis.WriteLine(strWierszZapisu)
'
strWierszZapisu = "X1 = " & txtX1.Text
swZapis.WriteLine(strWierszZapisu)
'
strWierszZapisu = "X2 = " & txtX2.Text
swZapis.WriteLine(strWierszZapisu)
'
'
Usunięcie zbędnego obiektu StreamWriter
swZapis.Close()
swZapis.Dispose()
Catch ex As Exception
strKom = ex.Message
strTyt = "Błąd wykonania nr " & Err.Number
MessageBox.Show(strKom, strTyt, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Class
6

Podobne dokumenty