【急各位大侠!帮忙看看】关于验证文件是否存在的有关问题!
【急!急!急!各位大侠!帮忙看看】关于验证文件是否存在的问题!!
我想做一个文件检测器,遇到了一个问题”
我有一个文件,我想利用程序在一个指定的文件夹中检测是否存在,但是我这个文件夹中有很多子文件夹,也有很多文件,我怎么利用 “递归”或“循环”作者道题啊 ??
我是用的 DirectoryInfo.GetDirectories() 的方法做的!,大家看看怎么做啊????谢谢了!!
------解决方案--------------------
try Directory.EnumerateFiles
nonocast.cn/你还在写递归来遍历文件吗
------解决方案--------------------
如果你能保证你的文件夹都是有权限的 那么可以直接
DirectoryInfo.GetFiles("1.exe", SearchOption.AllDirectories);
他会搜索子文件夹,
如果不能 你就要递归了
------解决方案--------------------
我想做一个文件检测器,遇到了一个问题”
我有一个文件,我想利用程序在一个指定的文件夹中检测是否存在,但是我这个文件夹中有很多子文件夹,也有很多文件,我怎么利用 “递归”或“循环”作者道题啊 ??
我是用的 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);
}
}
------解决方案--------------------