本人想搜索出整个硬盘的指定类型的文件(如TXT),还请各位热心帮忙解决,先谢了!
功能:通过程序自动搜索所有驱动盘中的指定类型的文件
已用方法:
1、通过全盘目录递归方式查找文件,但是其速度太慢,并且操作界面会导致死锁,没法点击
2、利用OpenFileDialog对象,设置文件夹与过滤条件后,取得的filenames总为空
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "C:\\Documents and Settings\\Administrator " ;
openFileDialog1.Filter = "*.txt|*.xsl ";
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true;
foreach (string a in (openFileDialog1.FileNames))
{
textBox3.Text += a;}
本人手头的分不多了,还请各位热心帮助,先谢了!
QQ:71181397
------解决方案--------------------public void FindFile(string pathstr)
{
DirectoryInfo Dir = new DirectoryInfo(pathstr);
try
{
//textBox1为基础文件夹,textBox2为文件的扩展名
foreach (DirectoryInfo d in Dir.GetDirectories())
{
FindFile(Dir+d.ToString()+ "\\ ");
richTextBox1.AppendText(Dir + d.ToString() + "\\ ");
richTextBox1.AppendText( "\n ");
}
foreach (FileInfo f in Dir.GetFiles( "*. "+textBox2.Text))
{
richTextBox1.AppendText(Dir+f.ToString());
richTextBox1.AppendText( "\n ");
}
}
catch
{
}
}
textbox2.text是文件格式,希望对你有用
------解决方案-------------------- private void FindFiles(string _strPath,MenuItem menuItemParent)
{
DirectoryInfo[] dinfo;
FileInfo[] finfo;
DirectoryInfo directoryinfo;
MenuItem _menuItemFolder;
MenuItem _menuItemFile;
//当前路径下信息
directoryinfo=new DirectoryInfo(_strPath);
//文件夹信息
dinfo= directoryinfo.GetDirectories();
//当前路径下所有文件
finfo =directoryinfo.GetFiles(@ "*. "+this.strFileType);
if(finfo.Length==0)//若当前路径下不存在文件
{
}
else//若当前路径下存在文件
{
for(int j=0;j <finfo.Length;j++)
{
//this.listBox1.Items.Add(finfo[j].FullName);
_menuItemFile=new MenuItem(System.IO.Path.GetFileName(finfo[j].FullName));
_menuItemFile.Click+=new EventHandler(OpenFile);
//_menuItemFile.
//menuItemParent.MenuItems.Add(new MenuItem(System.IO.Path.GetFileName(finfo[j].FullName)));
menuItemParent.MenuItems.Add(_menuItemFile);
}
}
//当前路径下所有文件夹
if(dinfo.Length==0)//若当前目录路径下不存在下属文件夹
{
}
else
{
//this.intDepthPosition++;
//if(this.intDepthPosition <this.intFindDepth+1)
//{
for(int i=0;i <dinfo.Length;i++)
{
//_menuItemFolder=new MenuItem(System.IO.Path.GetDirectoryName(dinfo[i].FullName));
_menuItemFolder=new MenuItem(dinfo[i].FullName.Replace(_strP