標籤:des style blog color 使用 os io 檔案
本篇是一個案例,其核心通過代碼展示代碼中的遞迴這個用法,程式的介面如下:
當點擊“載入”按鈕時,根據路徑中的地址,載入該檔案夾下所有的子檔案夾和子檔案,代碼如下:
1 private void BtnLoad_Click(object sender, EventArgs e) 2 { 3 string sPath = txtPath.Text.Trim(); 4 LoadDirAndFile(sPath, tvList.Nodes); 5 } 6 7 private void LoadDirAndFile(string sPath, TreeNodeCollection treeNodeCollection) 8 { 9 string strDir = sPath.Substring(sPath.LastIndexOf(@"\") + 1);10 TreeNode tNode = treeNodeCollection.Add(strDir);11 12 //載入所有目錄13 string[] strDir1 = Directory.GetDirectories(sPath);14 foreach (string item in strDir1)15 {16 //返回目錄的最後一級(名稱)17 string sDir = item.Substring(item.LastIndexOf(@"\") + 1);18 TreeNode tNode1 = tNode.Nodes.Add(sDir);19 LoadDirAndFile(item, tNode1.Nodes); //遞迴載入20 }21 22 string[] strFiles = Directory.GetFiles(sPath, "*.txt");23 foreach (string item in strFiles)24 {25 TreeNode tNodeFile = treeNodeCollection.Add(Path.GetFileName(item));26 tNodeFile.Tag = item;27 }28 }29 30 private void tvList_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)31 {32 if (e.Node.Tag!=null)33 {34 //檔案節點35 txtContent.Text = File.ReadAllText(e.Node.Tag.ToString(), Encoding.Default);36 }37 }
總結:
1.負載檔案夾節點時,要考慮到檔案夾下還有可能有子檔案夾和子檔案,所以要使用遞迴載入;
2.在實現點擊檔案節點,要在右邊的文字框中查看文字檔全部的內容,就在遞迴負載檔案夾和檔案時,為所有的檔案節點加了tag屬性,後面雙擊節點時,只要tag屬性不為空白即為檔案節點(讀取即可),而為空白的則是檔案夾節點(不需要處理)。