简单文件管理器

要求:在文本框中输入要添加文件的路径,根据地址,点击添加将文本文件添加到TreeView中,然后双击文件在右边的TxtBox中显示出来(此处文本文件定义为txt格式)。

Tips: ->获得指定目录中的子目录名: System.IO.Directory.GetDirectories(path);

惯例是先加文件夹。

首先声明两个存放文本文件和文件夹文件路径的数组:

            string[] filePath = System.IO.Directory.GetFiles(path,"*.txt");
string[] filesPath = System.IO.Directory.GetDirectories(path);

此时两个数组里存放的都是路径,那么如何通过文件或者文件夹的路径得到文件的文件名及后缀呢?

使用System.IO.Path.GetFileName(),再用for循环分别遍历两个数组,就得到文件名了。

接下来的问题是,为Treeview添加一个父节点:

TreeNode tn = treeView.Nodes.Add(string.Format("解决方案'{0}'", System.IO.Path.GetFileName(path)));

然后把文件和文件夹放入父节点下,就可以了。但是有一个很大的问题:如果子节点下还有子节点,另一个子节点下还有……那么要添加多少次了?答案是有多少添加多少次。所以我们可以添加一个专门处理节点和路径的方法,简单的递归,自己调用自己的方法。

完整代码:

        private void InTreeView(TreeNode tn, string path)
{
string[] filePath = System.IO.Directory.GetFiles(path,"*.txt");
string[] filesPath = System.IO.Directory.GetDirectories(path);
for (int i = 0; i < filesPath.Length; i++)
{
TreeNode tn1 = tn.Nodes.Add(System.IO.Path.GetFileName(filesPath[i]));
InTreeView(tn1, filesPath[i]);
}
for (int i = 0; i < filePath.Length; i++)
{
TreeNode tn2 = tn.Nodes.Add(System.IO.Path.GetFileName(filePath[i]));
tn2.Tag = filePath[i];
}
}

在添加按钮里调用InTreeView方法:

        private void btnAdd_Click(object sender, EventArgs e)
{
treeView.Nodes.Clear();
string path = txtPath.Text.Trim();
if (!System.IO.Directory.Exists(path))
{
MessageBox.Show("输入的路径不存在!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
TreeNode tn = treeView.Nodes.Add(string.Format("解决方案'{0}'", System.IO.Path.GetFileName(path)));
InTreeView(tn, path);

treeView.ExpandAll();
}

这样添加文件路径之后就可以在TreeView里面查看到它的树状结构了。

下一个问题就是如何让txt文件内容在TextBox里面显示出来呢?答案是为TreeView添加一个鼠标双击事件:

        private void treeView_MouseDoubleClick(object sender, MouseEventArgs e)
{
TreeNode tn = treeView.SelectedNode;
string context = System.IO.File.ReadAllText(tn.Tag.ToString(),Encoding.Default);
txtContext.Text = context;
}

OK!

posted @ 2012-02-15 22:44  王小萌  阅读(401)  评论(0编辑  收藏  举报