110,538
社区成员
发帖
与我相关
我的任务
分享
//文件搜索代码部分
int scanout_i = 0;
public void serachfile(string filedirectory, int file_i)//file_i为之前定义垃圾文件类型索引
{
DirectoryInfo dir = new DirectoryInfo(filedirectory);
DirectoryInfo[] child_dir = null;
FileInfo[] child_file = null;
try
{
child_dir = dir.GetDirectories();
child_file = dir.GetFiles(files.Items[file_i].Text);
//遍历所有文件夹
foreach (DirectoryInfo childir in child_dir)
{
serachfile(childir.FullName, file_i);
}
//遍历输出所有文件名,类型,大小,总数
foreach (FileInfo childfile in child_file)
{
scanout.Items.Add(childfile.Name);
scanout.Items[scanout_i].SubItems.Add(childfile.FullName);
scanout.Items[scanout_i++].SubItems.Add(childfile.Length.ToString());
filelab.Text = scanout.Items.Count.ToString();
Application.DoEvents();
}
}
catch {}
}
//扫描文件方法
delegate void delescan();
public void scanfile()
{
int driver_i = 0;
int filesign = 0;
while (driver_i < driverinfo.Items.Count)
{
//跨线程访问控件
if (driverinfo.InvokeRequired || files.InvokeRequired)
{
delescan d = new delescan(scanfile);
Invoke(d);
}
else if (driverinfo.Items[driver_i].Checked)
{
while (filesign < files.Items.Count)
{
if (files.Items[filesign].Checked)
{
serachfile(driverinfo.Items[driver_i].Text, filesign);
}
filesign++;
}
}
driver_i++;
filesign = 0;
}
}
//扫描单击事件
Thread scan = new Thread(new ThreadStart(scanfile));
if (scancmd.Text == "扫描")
{
scancmd.Text = "停止";
scanout.Items.Clear();
tabControl2.DeselectTab(0);//切换入扫描文件选项卡
scan.Start();
MessageBox.Show("扫描完毕", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
scancmd.Text = "扫描";
delallfilecmd.Enabled = true;
delfilecmd.Enabled = true;
}
else
{
scancmd.Text = "扫描";
scan.Abort();
}