最近在学习C#相关知识,实现一个简单的资料管理器的功能,功能很简单。里面利用了递归的读取方式。
1.首先我们先对页面进行简单设计 我就用了两个控件 一个是TreeView 另一个是TextBox,如下图所示:
2.界面很简单,下面就是对功能进行编写
private void Form1_Load(object sender, EventArgs e)
{
//当首次加载的时候我们需要读取相应的文件夹地址
string path = @"C:\Users\YIXICHEN\Desktop";
//初始化加载
GetDirectoryAndFile(path, treeView1.Nodes);
}
/// <summary>
/// 这个是读取文件夹和对应文件的递归方法
/// </summary>
/// <param name="path">路径</param>
/// <param name="tc">TreeView的节点</param>
private void GetDirectoryAndFile(string path,TreeNodeCollection tc) {
//获得文件夹的全路径
string[] dicPath = Directory.GetDirectories(path);
for (int i = 0; i < dicPath.Length; i++)
{
//去路径获得文件夹的名称
string dicName = Path.GetFileNameWithoutExtension(dicPath[i]);
//将获取的文件夹添加到对应的子节点下
TreeNode tn = tc.Add(dicName);
//递归进行节点添加
GetDirectoryAndFile(dicPath[i],tn.Nodes);
}
}
这个时候我们就完成了,对文件的加载,我们可以读取到对应目录下的文件,我们要做的功能室读取文件和文件夹,所以我们还要对文件进行操作。
private void GetDirectoryAndFile(string path,TreeNodeCollection tc) {
//获得文件夹的全路径
string[] dicPath = Directory.GetDirectories(path);
for (int i = 0; i < dicPath.Length; i++)
{
//去路径获得文件夹的名称
string dicName = Path.GetFileNameWithoutExtension(dicPath[i]);
//将获取的文件夹添加到对应的子节点下
TreeNode tn = tc.Add(dicName);
//递归进行节点添加
GetDirectoryAndFile(dicPath[i],tn.Nodes);
}
//获取对应文件夹下得文件路径+名称
string[] filePath = Directory.GetFiles(path);
for (int i = 0; i < filePath.Length; i++)
{
//获取文件名称
string fileName = Path.GetFileNameWithoutExtension(filePath[i]);
//将文件添加到对应的节点下
TreeNode tn= tc.Add(fileName);
//利用控件的Tag属性进行地址存值
tn.Tag = filePath[i].ToString();
}
}
这个时候我们对文件的加载已经完成了左侧TreeView的部分已经完成,我们放置TextBox的目的是为了,将txt文档的内容加载在右侧,触发TreeView的DoubleClick事件 。
private void treeView1_DoubleClick(object sender, EventArgs e)
{
//获取选中的文件地址
string filePath= treeView1.SelectedNode.Tag.ToString();
//读取并显示文件内容
textBox1.Text = File.ReadAllText(filePath,Encoding.Default);
}
这个时候如果右侧读取文件的时候出现乱码的形式 说明你的Encoding转码格式不对,选择一个正确的转码就行了。
好了,一个简单的资源管理器功能就实现了,如果有问题 希望各位大佬指出。