搜索文件(2)实现过程

二、实现过程

(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

 

当没有输入目录时,点击搜索,结果如下图所示。

当没有输入文件时,点击搜索,结果如下图所示。

正常搜索,结果如下图所示。

发布了154 篇原创文章 · 获赞 69 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/haier123888/article/details/104303969