winfrom 從本地讀取txt檔案內容新增到窗體上
阿新 • • 發佈:2019-01-11
我使用的是dev 中的memoEdit控制元件(和textbox類似)
下面看程式碼
private void GetFileText() { //獲取檔案相對路徑 string path = System.Windows.Forms.Application.StartupPath; path= path.Substring(0,path.Length-10); //獲取檔案絕對路徑 string folder = Path.Combine(path, "AppData\\Version"); //獲取指定目錄下所有檔案 DirectoryInfo theFile = new DirectoryInfo(folder); string content = "\r\n"; //判斷是否為空 if (theFile.Exists) { //建立陣列接收所有檔案 FileInfo[] arrDir = theFile.GetFiles(); //對檔案照版本號進行排序 SortAsFileName(ref arrDir); //遍歷排序後的檔案 foreach (FileInfo item in arrDir) { string str=null; //建立閱讀流逐行讀取文字內容 using (StreamReader sr = new StreamReader(
[email protected]"{item.FullName}", Encoding.Default)) { string txt = null; int i = 1; //txt = txt + sr.ReadLine() + "\r\n"; while ((txt=sr.ReadLine())!=null) { //如果此行為空或者為為換行則跳出此次迴圈 if (string.IsNullOrWhiteSpace(txt)) { continue; } else { if (i == 1) { //第一行資料格式 str += txt + "\r\n\r\n"; } else if (i==2) { //第二行資料格式 str = str + "\t" + txt + "\r\n\r\n"; } else { //第二行以後的資料格式 str = str + "\t\t" + txt + "\r\n\r\n"; } i++; } } } content = content + str + "\r\n\r\n"; } } //給控制元件賦值 memoEdit1.Text = content; memoEdit1.ReadOnly = true; memoEdit1.TabStop = false; }
下面是排序方法由於是版本說明所以我先將檔名稱轉化為數字再根據大小倒序排列
/// <summary> /// 按照版本號倒序排序 /// </summary> /// <param name="arrFi"></param> private void SortAsFileName(ref FileInfo[] arrFi) { Array.Sort(arrFi, delegate (FileInfo x, FileInfo y) { return (int.Parse)(y.Name.Replace(".","").Replace("V","").Replace("txt","")).CompareTo((int.Parse)(x.Name.Replace(".","").Replace("V","").Replace("txt",""))); }); //Array.Sort(arrFi, delegate (FileInfo x, FileInfo y) { return y.Name.CompareTo(x.Name); }); }
效果圖