二、实现过程
(1)创建一个项目,将其命名为serchfile,默认窗体为Form1.
(2)在Form1窗体中添加2个Label控件、1个Button控件用于搜索,2个TextBox控件用于输入,添加1个ListView控件用来显示文件的详细信息。
(3)编辑ListView控件。选择ListView1控件的【Colums】属性,弹出ColumnHeader集合编辑器对话框。
点击【添加】按键,添加columnHeader1、columnHeader2、columnHeader3和columnHeader4共4个成员,并编辑其属性下图所示:
| columnHeader1 | columnHeader2 | columnHeader3 | columnHeader4 |
Text | 文件名 | 路径 | 大小 | 创建日期 |
TextAlign | Left | Center | Center | Center |
Width | 100 | 180 | 60 | 180 |
(4)代码如下:
private void btnSearch_Click(object sender, EventArgs e)
{
listView1.Items.Clear();//清空listview1中的内容,仍然保存着listviewitem项的结构,即listview有多
//列,每列可能对应的列标题数据等。
if (textBox1.Text.Trim()==string.Empty)//判断textbox1中的内容是否为空的
{
MessageBox.Show("请输入查找的文件的关键字!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Stop);
//显示一个消息框,该消息框包含消息“请输入查找的文件的关键字!”、标题栏标题"系统提示"、
//按钮为“确定”和图标“停止图标”,并且返回结果。
textBox1.Focus();//可以把光标停在要停的某个文本框
return;
}
if (textBox2.Text.Trim() == string.Empty)
{
MessageBox.Show("请输入查找的目录名称!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
textBox2.Focus();
return;
}
SerachFile(textBox2.Text);
// MessageBox.Show("搜索完毕");
}
#endregion
#region 搜索方法
public void SerachFile(string fileDirectory)
{
DirectoryInfo dir = new DirectoryInfo(fileDirectory);//创建一个类,要传递的参数为fileDirectory
DirectorySecurity sec = new DirectorySecurity(fileDirectory, AccessControlSections.Access);
if (!sec.AreAccessRulesProtected)//判断文件夹的访问权限。DirectorySecurity .AreAccessRulesProtected,//获取一个布尔值,用于指定与 ObjectSecurity 对象关联的自定义访问控制列表 (DACL) 是否受到保护。
{
FileSystemInfo[] f = dir.GetFileSystemInfos();//FileSystemInfo 类,为 FileInfo 和 DirectoryInfo 对象//提供基类。FileSystemInfo[],强类型FileSystemInfo项的数组。DirectoryInfo.GetFileSystemInfos 方法方//法取得目录中所有子目录和文件的强类型
foreach (FileSystemInfo i in f)
{
if (i is DirectoryInfo)//如果i是一个目录
{
SerachFile(i.FullName);//递归处理,再次调用searchfile,直到找到根目录的文件
}
else
{
if (i.Name.ToUpper().Contains(textBox1.Text.Trim().ToUpper()))//分别将最终根目录下的文件名转换成大//写字母,将textbox1中的内容转换成大写字母判断根目录下的文件名是否含有textbox1中的字符
{
FileInfo fin = new FileInfo(i.FullName);
listView1.Items.Add(fin.Name);//为ListView第一列添加文件名
listView1.Items[listView1.Items.Count - 1].SubItems.Add(fin.FullName);//为ListView第二列添加文件路//径
listView1.Items[listView1.Items.Count - 1].SubItems.Add(fin.Length.ToString());//为ListView第三列添//加文件大小
listView1.Items[listView1.Items.Count - 1].SubItems.Add(fin.CreationTime.ToString());//为ListView第//四列添加文件创建日期
}
}
}
}
}
#endregion
当没有输入目录时,点击搜索,结果如下图所示。
当没有输入文件时,点击搜索,结果如下图所示。
正常搜索,结果如下图所示。