读书人

【急各位大侠!帮忙看看】关于验证文件

发布时间: 2012-08-14 10:39:57 作者: rapoo

【急!急!急!各位大侠!帮忙看看】关于验证文件是否存在的问题!!
我想做一个文件检测器,遇到了一个问题”
我有一个文件,我想利用程序在一个指定的文件夹中检测是否存在,但是我这个文件夹中有很多子文件夹,也有很多文件,我怎么利用 “递归”或“循环”作者道题啊 ??
我是用的 DirectoryInfo.GetDirectories() 的方法做的!,大家看看怎么做啊????谢谢了!!

[解决办法]
try Directory.EnumerateFiles
nonocast.cn/你还在写递归来遍历文件吗
[解决办法]
如果你能保证你的文件夹都是有权限的 那么可以直接
DirectoryInfo.GetFiles("1.exe", SearchOption.AllDirectories);
他会搜索子文件夹,
如果不能 你就要递归了
[解决办法]

C# code
List<string> files = new List<string>();void Add(string str){    lock (this)    {        files.Add(str);    }}int count = 0;private void button2_Click(object sender, EventArgs e){    files.Clear();    DriveInfo c = new DriveInfo("c");    Stopwatch sw = new Stopwatch();    sw.Start();    ThreadPool.SetMaxThreads(50, 50);    var arr = c.RootDirectory.GetDirectories();    count = arr.Length;    foreach (var dir in arr)    {        ThreadPool.QueueUserWorkItem(getFolder2, dir);    }    while (count  > 0)    {        Application.DoEvents();        Thread.Sleep(100);    }    sw.Stop();    var s = sw.ElapsedMilliseconds.ToString() + " ms";    MessageBox.Show(s);    MessageBox.Show(files.Count.ToString());    foreach (var item in files)    {        MessageBox.Show(item);    }}void getFolder2(object folder){    Queue<DirectoryInfo> dirs = new Queue<DirectoryInfo>(50);    dirs.Enqueue((DirectoryInfo)folder);    while (dirs.Count > 0)    {        var dir = dirs.Dequeue();        try        {            foreach (var item in dir.GetFiles("data.mdb", SearchOption.AllDirectories))            {                Add(item.FullName);            }            continue;        }        catch (Exception)        {        }        IEnumerable<DirectoryInfo> em ;        try         {                        em = dir.EnumerateDirectories("*", SearchOption.TopDirectoryOnly);        }        catch (Exception)        {            continue;        }        foreach (var d in em)        {            try            {                d.EnumerateFiles();                dirs.Enqueue(d);            }            catch (Exception)            {            }        }    }    lock (this)    {        count--;    }}
[解决办法]
rivate void GetFileList(DirectoryInfo diroot)
{
foreach (FileInfo fileName in diroot.GetFiles())
{
listFile.Add(fileName.FullName);
}
foreach (DirectoryInfo dirSub in diroot.GetDirectories())
{
GetFileList(dirSub);
}
}
[解决办法]
探讨

谢谢大家啊!实现了啊 !!
我是用这种方法实现 获取 指定目录下的所有文件夹和所有文件:

#region huoQuWenJian线程要执行的方法

/// <summary>
/// huoQuWenJian线程要执行的方法
/// </summary>
/// <param name="obj">指定文件的……

读书人网 >C#

热点推荐