【C#】txt的讀寫
阿新 • • 發佈:2019-01-23
這個程式和《【C#】XML讀寫與dataGridView的使用》(點選開啟連結)一個尿性,只是程式碼更加簡單,因為C#對txt的讀寫基本上和Java一樣,具體見《【Java】輸入與輸出與JDK1.5之後的新型字串StringBuilder》(點選開啟連結),直接一個FileStream與StreamReader/StreamWriter就足矣,但貌似自己還沒有寫過C#的檔案流,也就在這裡寫寫了。還是弄一個窗體程式,可以讀txt到TextBox,並且能將TextBox的內容寫入到檔案。
如果使用者一開始是沒有讀入txt的話,那就是直接建立一個新的檔案再寫入。
這個程式的編寫步驟如下:
一、場景佈置
場景佈置如下圖所示,在Form1中佈置2個Button+1個textbox
二、指令碼編寫
雙擊Button1與Button2分別賦予點選事件,編寫如下的程式碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace txtRW { public partial class Form1 : Form { string txt_FilePath = "";//用來記錄當前開啟檔案的路徑的 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();//一個開啟檔案的對話方塊 openFileDialog1.Filter = "文字檔案(*.txt)|*.txt";//設定允許開啟的副檔名 if (openFileDialog1.ShowDialog() == DialogResult.OK)//判斷是否選擇了檔案 { txt_FilePath = openFileDialog1.FileName;//開啟檔案的路徑 textBox1.Text = "";//清空textBox1 StreamReader streamReader = new StreamReader(txt_FilePath, Encoding.Default);//記錄使用者選擇的檔案路徑 while (!streamReader.EndOfStream) {//如果這個還沒有讀到檔案尾 string line = streamReader.ReadLine();//就一行一行地讀 textBox1.Text += line + "\r\n"; } streamReader.Close();//一定要關閉這個流,不然會和下面儲存檔案的流衝突 } else { MessageBox.Show("請開啟txt檔案"); } } private void button2_Click(object sender, EventArgs e) { FileStream fileStream = null;//根據不同情況使用不同的檔案指標 if (txt_FilePath == "")//如果使用者沒讀取過檔案,那就獲取一個檔案路徑寫入 { SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();//開啟一個儲存對話方塊 saveFileDialog1.Filter = "文字檔案(*.txt)|*.txt";//設定允許開啟的副檔名 if (saveFileDialog1.ShowDialog() == DialogResult.OK)//判斷是否選擇了一個檔案路徑 { txt_FilePath = saveFileDialog1.FileName;//獲取儲存路徑 fileStream = new FileStream(txt_FilePath, FileMode.Create);//以建立的方式開啟這個檔案 } else { MessageBox.Show("請開啟txt檔案"); } } else//如果使用者已經打開了檔案 { fileStream = new FileStream(txt_FilePath, FileMode.Truncate);//以覆蓋寫入的方式開啟這個檔案 } StreamWriter streamWriter = new StreamWriter(fileStream); streamWriter.Write(textBox1.Text);//開始寫入 streamWriter.Flush();//清空緩衝區 //關閉流 streamWriter.Close(); fileStream.Close(); MessageBox.Show("寫入txt檔案成功!"); } } }
這裡值得注意主要就是FileStream與StreamReader/StreamWriter兩個流,對於StreamReader無須FileStream幫助,自己就能指明程式路徑讀取,StreamWriter由於寫入方式有覆蓋寫入、建立寫入和附加寫入的存在,因此需要藉助FileStream的幫助,如果希望是附加寫入的,FileStream的第二個引數請使用FileMode.Append