怎样遍历一个文件夹下的子文件夹?

speedfiman 2010-10-12 09:40:20
如题,winform环境,我有一些文件夹装了不同的文件需要处理,现在通过folderbrowerdialog来读取文件夹,但是每次只能读最底层的文件夹来处理。已有代码如下:

public void multi_op(DirectoryInfo dif,StreamWriter sw)
{
string desfolder = dif.Parent.Parent.Parent.FullName

foreach (FileInfo f in dif.GetFiles("*.*"))
{
...
// 对单文件进行处理
}

}

求高手!
...全文
181 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wackyboy 2010-10-12
  • 打赏
  • 举报
回复

public void searchDirectory(string dir)// 母文件夹
{
foreach (string dir in Directory.GetDirectories(dir)) //遍历子文件夹
{
foreach (string Fi in Directory.GetFiles(dir)) // 遍历子文件夹中的文件
{
FileAction(Fi); // 操作
}
}
}

Lstevev 2010-10-12
  • 打赏
  • 举报
回复
我是来学习了。
flyerwing 2010-10-12
  • 打赏
  • 举报
回复
Directory.GetDirectories("pathstring")
这个好象成吧
chen_ya_ping 2010-10-12
  • 打赏
  • 举报
回复

String[] subDirectories= System.IO.Directory.GetDirectories(@"c:\");
foreach (String item in subDirectories)
{
Response.Write(item+"<br/>");
}
looklzg1108 2010-10-12
  • 打赏
  • 举报
回复
 public bool FindFile(string dirPath) //参数dirPath为指定的目录
{
//在指定目录及子目录下查找文件
DirectoryInfo Dir = new DirectoryInfo(dirPath);
try
{
foreach (DirectoryInfo d in Dir.GetDirectories())//查找子目录
{
FindFile(Dir + "\\" + d.ToString(), );

}
foreach (FileInfo f in Dir.GetFiles("*.*")) //查找文件 *.*表示所有文件
{
string exname = f.ToString().Substring(f.ToString().LastIndexOf(".") + 1);//得到后缀名
string strSourFile = f.FullName;
}
}
}
hujinn 2010-10-12
  • 打赏
  • 举报
回复

/// <summary>
/// 复制文件夹
/// </summary>
/// <param name="srcDir">源路径</param>
/// <param name="tgtDir">目标路径</param>
private void CopyDirectory(string srcDir, string tgtDir)
{
DirectoryInfo source = new DirectoryInfo(srcDir);//源文件夹
DirectoryInfo target = new DirectoryInfo(tgtDir);//目标文件夹

if (target.FullName.StartsWith(source.FullName, StringComparison.CurrentCultureIgnoreCase))
{
throw new Exception("父目录不能拷贝到子目录!");
}

if (!source.Exists)
{
return;
}

if (!target.Exists)
{
target.Create();
}

FileInfo[] files = source.GetFiles();

for (int i = 0; i < files.Length; i++)
{
File.Copy(files[i].FullName, target.FullName + @"\" + files[i].Name, true);
}

DirectoryInfo[] dirs = source.GetDirectories();

for (int j = 0; j < dirs.Length; j++)
{
CopyDirectory(dirs[j].FullName, target.FullName + @"\" + dirs[j].Name);//调用递归
}
}

这是一个复制文件夹的方法 你看下 修改下应该就能符合你的要求了

睡神在睡觉 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 claymore1114 的回复:]
递归

C# code

//删除目录
public void searchDirectory(string dir)
{
foreach (string dir in Directory.GetDirectories(dir))
{
searchDirectory……
[/Quote]

递归就能满足了,每次遍历到最底层,每次都把遍历的目录遍历一遍应该就是你的需求,这样用递归就可以了。
lyy_0814 2010-10-12
  • 打赏
  • 举报
回复
继续帮顶,期待更多的解答
claymore1114 2010-10-12
  • 打赏
  • 举报
回复
递归

//删除目录
public void searchDirectory(string dir)
{
foreach (string dir in Directory.GetDirectories(dir))
{
searchDirectory(dir);
}
foreach (string Fi in Directory.GetFiles(dir))
{
File.Delete(Fi);
}

}
qq346127416 2010-10-12
  • 打赏
  • 举报
回复

private static void getFilesAndDirs(DirectoryInfo rootDirectory)
{
Console.WriteLine("\n{0} 的内容有:", rootDirectory.Name);
Console.WriteLine("包含的文件有:");
FileInfo[] files = rootDirectory.GetFiles();
foreach (FileInfo file in files)
{
//对文件进行处理
Console.WriteLine(file.FullName);
}
DirectoryInfo[] directorys = rootDirectory.GetDirectories();
Console.WriteLine("包含的子目录有:");
foreach (DirectoryInfo directory in directorys)
{

Console.WriteLine(directory.FullName);
getFilesAndDirs(directory); //继续遍历子目录里得文件和及文件夹
}
}

getFilesAndDirs(@"C:\"); //调用
lexfu 2010-10-12
  • 打赏
  • 举报
回复

Directory.GetDirectories("C:\", "", SearchOption.AllDirectories);
damjmk2 2010-10-12
  • 打赏
  • 举报
回复
  using System;
using System.IO;
public string GetDirectoryInfos(string pathName)
{
try
{
DirectoryInfo currentDir = new DirectoryInfo(pathName);
DirectoryInfo[] childDir = currentDir.GetDirectories();
if (childDir.Length == 0)
return dirInfo += currentDir.FullName + "\n";
else
{
for (int i = 0; i < childDir.Length; i++)
{
if (i == 0)
dirInfo += currentDir.FullName + "\n";
GetDirectoryInfos(childDir[i]);
}
return dirInfo;
}
}
catch (DirectoryNotFoundException ex)
{
return "您输入的路径无效," + "详细信息:" + "\n" + ex.Message+"\n";
}
catch (UnauthorizedAccessException ex)
{
return "您输入路径无效," + "详细信息:" + "\n" + ex.Message+"\n";
}
}

speedfiman 2010-10-12
  • 打赏
  • 举报
回复
自己顶一个,需求很明确了,就是需要一些代码,实现遍历一个母文件夹下边的子文件夹,然后处理子文件夹中文件
damjmk2 2010-10-12
  • 打赏
  • 举报
回复
一般来说,遍历文件夹用的都是递归
djwkl 2010-10-12
  • 打赏
  • 举报
回复
把你的需求说的再明白点吧

110,524

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧