這三個類均屬於System.IO命名空間;
File類:
其中,_content是字符串(常量或變量);
寫文件時,如果指定路徑的文件不存在,則自動建立一個文件。讀取文件時,如果指定路徑的文件不存在,則發生報錯;
readAllLine()和writeAllLine()時使用_content[],這是字符數組,這樣才能將字符串一行一行的讀取或寫入;
修正:應修改成appendAllText(_path, _content);
Path類的方法可以在指定路徑字符串中獲取文件名;
例程運行效果:
在文本框中添加內容後,可以保存;
Directory類通過路徑獲取文件名時,使用物理路徑:
通過Server對象的Mappath方法,可以實現虛擬路徑向物理路徑的轉換:
可以直接調用Mappath方法,而無需通過Server對象:
我們的小例程:
在名字爲文本文件的文件夾中存放四個文本文件,讀取文本文件的個數,以及各自路徑和文件名:
MapPath方法用來獲取目錄的物理路徑;
運行效果:
接下來通過Path類來處理返回的路徑:
注意,Directory.getfiles();這個函數返回指定物理路徑的文件夾中的全部文件的全路徑和文件名,該返回值可作爲路徑參數,被其他方法接收;
運行效果:
新問題:如果文件夾中含有多種類型的文件,如何篩選出特定類型的文件
給第二個參數賦值:
將文件夾中的文本文件名在下拉列表中顯示出來:
運行效果:
添加按鈕和文本框:
補充:
要在PageLoad事件中添加如下語句,否則,每次點擊Button按鈕,下拉列表框內容會增加;
每次加載PageLoad事件時,要對dropDownList內容做清理;
或者加上回發頁面的判斷:
運行效果:
文本文件與pjq之間缺少"\";
解決方案:
可以添加"\"或者採用Combine()方法;
運行效果:
檢測文件是否存在並讀取內容:
運行後,選中文件點擊按鈕,併爲顯示文本文件的內容,原因:
這條語句判斷結果爲false,未進入,原因:
該_path必須爲文件的完整路徑,即帶擴展名的文件路徑,而上文中採用瞭如下代碼:
其返回的文件名爲不含有擴展名的文件,因此,不被識別,可做如下改進:再次運行,顯示結果如下:
一定一定要注意下述內容:
其中,文本框的TextMode屬性要設置成Multiple,否則會運行
時會發生其他錯誤;
至此,運行成功;
對文件內容進行保存:
注意:在捕獲改動後的文本框中的內容時,要使用string _content=TextBox1.Text;這個語句,而不是使用
string _content = File.ReadAllText(_path);語句。
首先添加保存按鈕:
運行成功,可在TextBox1中添加新內容,點擊 保存 按鈕,可以進行保存;
添加 讀取行 按鈕:
按行讀取文件時,要動態添加文本框,命名爲txt_holder,代碼如下:
運行效果:
文本框換行,較好的方法,在頁面中使用Css代碼來控制:
該代碼表示控制txt_holder元素下面的input(在源文件中表示文本框TextBox)元素,顯示方式以盒模型方式進行;
使用盒模型,該元素會佔取一整行;
運行效果:
在Css中修改文本框的長度:
如何實現按行保存:
注意,文本框是在我們點擊 讀取行 按鈕後創建的,其點擊事件是在PageLoad事件之後進行,我們所看到的頁面在點擊按鈕之後,呈現的都是一個全新的頁面,因此如果不點擊讀取行按鈕而點擊其它任何別的按鈕,文本框不會出現在頁面之中。
因此,要想使動態創建的按鈕,無論在點擊哪個按鈕之後,動態控件仍然存在在頁面之中,我們採用的方法是在PageLoad事件中動態創建按鈕;
思考一個問題:
爲什麼分行讀取和整個讀取要放在兩個頁面中執行,爲了減少編程衝突;