本逐步解說示範如何使用 類別開啟和讀取檔案、檢查檔案是否正在存取、使用 StreamReader 類別實例 StreamReader 讀取檔案內的字串,以及使用 StreamWriter 類別寫入檔案。
備註
您的電腦可能會在下列指示中顯示某些 Visual Studio 使用者介面元素的不同名稱或位置。 您擁有的 Visual Studio 版本,以及您所使用的設定會決定這些元素。 如需詳細資訊,請參閱 個人化 IDE。
建立應用程式
啟動 Visual Studio,並建立用戶可用來寫入指定檔案的表單來開始專案。
建立專案
在 [檔案] 功能表上,選取 [新增專案]。
在 [ 新增專案 ] 窗格中,按兩下 [Windows 應用程式]。
在 [ 名稱] 方塊中輸入
MyDiary,然後按兩下 [ 確定]。Visual Studio 會將專案新增至 方案總管,而 Windows Forms 設計工具 隨即開啟。
將下表中的控件新增至窗體,並設定其屬性的對應值。
| 物件 | 性能 | 價值 |
|---|---|---|
| Button |
名稱 文字 |
Submit送出專案 |
| Button |
名稱 文字 |
Clear清除輸入 |
| TextBox |
名稱 文字 多行 |
Entry請輸入內容。 False |
寫入檔案
若要新增透過應用程式寫入檔案的功能,請使用 類別 StreamWriter 。 StreamWriter 是針對特定編碼中的字元輸出所設計,而 類別 Stream 則是針對位元組輸入和輸出所設計。 將 StreamWriter 用於將資訊行寫入標準文字檔案。 如需 類別 StreamWriter 的詳細資訊,請參閱 StreamWriter。
新增寫入功能
從 [ 檢視] 選單中,選擇 [ 程序代碼 ] 以開啟 [程序代碼編輯器]。
因為應用程式會參考 System.IO 命名空間,請在程式碼的開頭新增下列語句,再加入表單的類別宣告,其開頭為
Public Class Form1。Imports System.IO在寫入檔案之前,您必須建立 類別的 StreamWriter 實例。
從檢視功能表中,選擇設計工具以返回Windows Forms 設計工具。 按兩下
Submit按鈕以建立 Click 按鈕的事件處理程式,然後新增下列程式代碼。Dim fw As StreamWriter
備註
Visual Studio 集成開發環境 (IDE) 會返回程式代碼編輯器,並將插入點放在您應該新增程式碼的事件處理程式內。
若要寫入檔案,請使用 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請確定使用者無法提交空白輸入,請在
Dim ReadString As String之後直接新增下列程式代碼。If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If因為這是日記,所以使用者會想要將日期指派給每個條目。 在 之後
fw = New StreamWriter("C:\MyDiary.txt", True)插入下列程序代碼,將變數Today設定為目前的日期。Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)最後,附加程式代碼以清除 TextBox。 將下列程式代碼新增至
Clear按鈕的 Click 事件中。Entry.Text = ""
將顯示功能新增至日記
在本節中,您會新增一個功能,以顯示 DisplayEntryTextBox中的最新條目。 您也可以新增 ComboBox 來顯示各種項目,使用者可以從中選取要在 DisplayEntryTextBox 顯示的項目。
StreamReader 類別的實例會從 MyDiary.txt 讀取。 和類別一 StreamWriter 樣, StreamReader 是用於文本檔。
針對本逐步解說的這一節,請將下表中的控件新增至窗體,並設定其屬性的對應值。
| 管理 | 性能 | 價值觀 |
|---|---|---|
| TextBox |
名稱 可見 大小 多行 |
DisplayEntryFalse120,60True |
| Button |
名稱 文字 |
Display顯示器 |
| Button |
名稱 文字 |
GetEntries取得條目 |
| ComboBox |
名稱 文字 已啟用 |
PickEntries選取項目 False |
若要填入下拉式方塊
PickEntriesComboBox用來顯示使用者提交每個專案的日期,讓使用者可以從特定日期選取專案。 建立一個 Click 事件處理程式給GetEntries按鈕,並新增下列程式碼。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若要測試您的程式碼,請按 F5 編譯應用程式,然後按下 取得條目。 點擊 ComboBox 下拉箭頭以顯示輸入日期。
選擇並顯示個別項目
建立 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若要測試程序代碼,請按 F5 編譯應用程式,然後提交專案。 按一下 取得項目,從 ComboBox中選取一個項目,然後按一下 顯示。 選取項目的內容會出現在 中
DisplayEntryTextBox。
讓使用者刪除或修改條目
最後,您可以包含其他功能,讓用戶能夠使用 DeleteEntry 和 EditEntry 按鈕來刪除或修改專案。 除非有項目顯示,否則這兩個按鈕都會保持停用。
將下表中的控件新增至窗體,並設定其屬性的對應值。
| 管理 | 性能 | 價值觀 |
|---|---|---|
| Button |
名稱 文字 已啟用 |
DeleteEntry刪除條目 False |
| Button |
名稱 文字 已啟用 |
EditEntry編輯條目 False |
| Button |
名稱 文字 已啟用 |
SubmitEdit提交編輯 False |
启用條目的刪除和修改
將下列程式代碼新增至
Display按鈕Click的事件,之後DisplayEntry.Text = ReadString。DeleteEntry.enabled = True建立 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當使用者顯示條目時,
EditEntry按鈕會被啟用。 請將下列程式碼在Click之後加入Display按鈕的DisplayEntry.Text = ReadString事件中。EditEntry.Enabled = True建立 Click 按鈕的
EditEntry事件處理程式,並新增下列程序代碼。Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True建立 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 以確認刪除。