编写资源管理器
使用到的类及方法: 1、TreeNode 2 、Path.GetFileNameWithoutExtension() 3、DirectoryInfo 4、 FileInfo
实现了给一个路径,得到改路径下的所有文件夹及文件树(问题:★★中的问题如何解决?)
1 private void Form1_Load(object sender, EventArgs e) 2 { 3 CreateParent("E:\\Downloads666"); 4 5 6 } 7 //创建父节点方法(只要给一个路径就可以把该路径下的所有文件转换为节点) 8 void CreateParent(string path) 9 { 10 //实例化父节点 11 TreeNode parent = new TreeNode(); 12 //使用Path.GetFileNameWithoutExtension()方法得到父节点的文件名 13 parent.Text= Path.GetFileNameWithoutExtension(path); 14 //把父节点添加到树中 15 tvType.Nodes.Add(parent); 16 //把子节点添加到父节点中 17 CreateChild(path, parent); 18 } 19 //给出路径及父节点,把所有子节点添加进父节点中 20 void CreateChild(string path, TreeNode parent) 21 { 22 //实例化DirectoryInfo 23 DirectoryInfo di = new DirectoryInfo(path); 24 //使用GetDirectories方法得到当前路径的所有子目录 25 DirectoryInfo[] dirs= di.GetDirectories(); 26 foreach (DirectoryInfo item in dirs) 27 { 28 TreeNode child = new TreeNode(); 29 child.Text = item.Name; 30 child.Tag = item.FullName; 31 parent.Nodes.Add(child); 32 //把所有文件添加进去 33 CreateFile(child.Tag.ToString(), child); 34 //添加文件节点 35 //child.Nodes. 36 //★★★问题★★★。 37 //在遍历的时候自己调用自己,循环得到所有目录下的多级子目录,但这样的方法好不好?? 没人给我解答,我自学,你妹的哈哈!! 38 //能不能在单击节点的时候调用方法,得到该节点的下一级的目录及文件?是不是这样要速度快很多 39 CreateChild(child.Tag.ToString(), child); 40 } 41 } 42 //给出路径及父节点,把所有文件添加进节点中 43 void CreateFile(string path, TreeNode parent) 44 { 45 DirectoryInfo di = new DirectoryInfo(path); 46 FileInfo[] files= di.GetFiles(); 47 foreach (FileInfo item in files) 48 { 49 TreeNode wj = new TreeNode(); 50 wj.Text = item.Name; 51 wj.Tag = item.FullName; 52 parent.Nodes.Add(wj); 53 } 54 }
增加下面代码,可以点击文件节点的时候获取改文件的内容,并显示到txt2中
1 private void tvType_AfterSelect(object sender, TreeViewEventArgs e) 2 { 3 if (e.Node.Tag == null) 4 { 5 return; 6 } 7 string path=e.Node.Tag.ToString(); 8 if (path.Contains(".txt")) 9 { 10 textBox1.Text = e.Node.Text; 11 textBox2.Text = File.ReadAllText(path, Encoding.GetEncoding("gb2312")); 12 } 13 }
资源管理器,还可以编辑TXT中的内容和编辑标题等。(代码后面加上,别偷懒)\(^o^)/
★在读取内容相当大的txt文件的时候会卡,如何解决?★
有个声音弱弱的回答:使用流类啊(Stream)---先睡觉了,明天再来!。。