Witam uprzejmie!
W VB Net zrobiłem programik na wzór systemowego Notatnika. Nie można zapisać zmian dokonanych w istniejącym i otwartym do edycji pliku; z punktu widzenia systemu, ten plik jest używany przez inny proces.
Znalazłem w Necie (a naprawdę szukam rozwiązania od wielu dni…) sugestię, aby przepisać zawartość pliku do zmiennej (utworzyłem taką zmienną - strNapis ), zamknąć plik i pracować dalej na tej zmiennej. To by zadziałało, bo istniejący na dysku plik daje się nadpisać nowym plikiem. Jednak nie potrafię zamknąć pliku nie zamykając całego programu. Polecenia Close i FileClose zwracają komunikat, że nie mogą operować na zmiennej tekstowej (ścieżka do pliku).
Kod nie jest długi, więc pozwalam sobie wkleić w całości.
Imports System.IO
Public Class Form1
Dim strFileName As String 'deklaracja zmiennej ze ścieżką do pliku jaki zostanie wybrany do otwarcia
Dim strNapis As String 'deklaracja zmiennej do której zostanie przepisana zawartość pliku
'wywołuje okno "Otwórz" i wczytuje treść pliku tekstowego
Private Sub OtrwórzToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OtrwórzToolStripMenuItem.Click
OpenFileDialog1.InitialDirectory = "D:\" 'domyślny katalog
OpenFileDialog1.Title = "Otwórz plik" ' tytuł okna dialogowego
OpenFileDialog1.Filter = "Text Files|*.txt" 'jakie pliki otworzyć
OpenFileDialog1.ShowDialog() ' otwarcie okna dialogowego ”Otwórz plik”
strFileName = OpenFileDialog1.FileName 'przypisuje zmiennej ścieżkę wybranego pliku
Dim objReader As New System.IO.StreamReader(strFileName)
strNapis = objReader.ReadToEnd ' przypisuej zmiennej zawartość pliku
TextBox1.Text = (strNapis)
End Sub
'wywołuje okno "Zapisz jako..." i zapisuje treść pliku tekstowego
Private Sub ZapiszToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ZapiszToolStripMenuItem.Click
SaveFileDialog1.InitialDirectory = "D:\," 'domyślny katalog
SaveFileDialog1.Title = "Zapisz jako..." ' tytuł okna dialogowego
SaveFileDialog1.Filter = "Text Files|*.txt" 'jakie pliki zapisać
SaveFileDialog1.ShowDialog() 'otwarcie okna dialogowego "Zapisz jako..."
strFileName = SaveFileDialog1.FileName 'przypisuje zmiennej ścieżkę wybranego pliku
Dim objWriter As New System.IO.StreamWriter(strFileName)
objWriter.Write(TextBox1.Text)
objWriter.Close()
MsgBox("Dokument zapisany!")
End Sub
End Class