using System;
using System.IO;
using System.Windows.Forms;
namespace FileManager
{
public partial class FormFM : Form
{
public FormFM()
{
InitializeComponent();
}
private void BtnSelect_Click(object sender, EventArgs e)
{
//清除目录节点
tvFolder.Nodes.Clear();
//打开文件夹对话框
FolderBrowserDialog fbd = new FolderBrowserDialog();
DialogResult result = fbd.ShowDialog();
if (result == DialogResult.OK)
{
this.txtFilePath.Text = fbd.SelectedPath;
//根节点
TreeNode rootNode = new TreeNode();
//用tag存放全路径,以备递归方法中用
rootNode.Tag = txtFilePath.Text;
//根节点文件夹名
rootNode.Text = txtFilePath.Text.Substring(txtFilePath.Text.LastIndexOf("\\") + 1);
//根节点文件夹名添加到treeview
tvFolder.Nodes.Add(rootNode);
//调用递归方法查找文件夹
LoadFolder(rootNode);
//根目录
DirectoryInfo rootDirectoryInfo = new DirectoryInfo(txtFilePath.Text);
//根目录下的所有文件
FileInfo[] myFile = rootDirectoryInfo.GetFiles();
foreach (FileInfo item in myFile)
{
//文件加入到根目录节点下
rootNode.Nodes.Add(item.Name);
}
}
}
/// <summary>
/// 递归查找文件夹及文件夹中的文件
/// </summary>
/// <param name="childNode"></param>
public void LoadFolder(TreeNode childNode)
{
DirectoryInfo directoryInfo = new DirectoryInfo(childNode.Tag.ToString());
try
{
DirectoryInfo[] list = directoryInfo.GetDirectories();
foreach (DirectoryInfo di in list)
{
TreeNode tn = new TreeNode();
tn.Text = di.Name;//目录名
tn.Tag = di.FullName;
FileInfo[] arrfi = di.GetFiles();//目录中的文件名
foreach (FileInfo fi in arrfi)
{
TreeNode tn1 = new TreeNode();
tn1.Text = fi.Name;
tn1.Tag = fi.FullName;
tn.Nodes.Add(tn1);
LoadFolder(tn1);
}
childNode.Nodes.Add(tn);
LoadFolder(tn);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
//throw new Exception(ex.Message);
}
}
}
}