c#如何提取具有特定扩展名的文件路径并检索其父文件夹名
我有一个文件夹结构如下,最上面的两个文件夹结构是可预测的,例如DrawingFiles和项目名称,它们将是任意随机数。我正在尝试从项目文件夹中提取扩展名为“.dwg”的文件 复杂性在于,在项目文件夹中,可能存在任意数量的随机文件夹,“.dwg”文件可能位于任意文件夹或多个文件夹中。我的目标是从每个项目文件夹和找到任何给定dwg文件的文件夹中提取“.dwg”文件的所有文件路径,该文件夹将成为规程文件夹。我想提取项目名称、规程名称和中的dwg文件列表c#如何提取具有特定扩展名的文件路径并检索其父文件夹名,c#,C#,我有一个文件夹结构如下,最上面的两个文件夹结构是可预测的,例如DrawingFiles和项目名称,它们将是任意随机数。我正在尝试从项目文件夹中提取扩展名为“.dwg”的文件 复杂性在于,在项目文件夹中,可能存在任意数量的随机文件夹,“.dwg”文件可能位于任意文件夹或多个文件夹中。我的目标是从每个项目文件夹和找到任何给定dwg文件的文件夹中提取“.dwg”文件的所有文件路径,该文件夹将成为规程文件夹。我想提取项目名称、规程名称和中的dwg文件列表 DrawingFiles &
DrawingFiles
>12345
>xyz12
>Engr
a.dwg
b.dwg
>Elec
c.dwg
f.dwg
>45678
>xyz12
at.dwg
bt.dwg
>Elec
b.dwg
l.dwg
>spec1
>Struct
123.dwg
您可以通过传递已知文件夹路径来调用此方法:
private List<String> DirSearch(string rootDir)
{
List<String> files = new List<String>();
try
{
foreach (string f in Directory.GetFiles(rootDir))
{
FileInfo fi = new FileInfo(f);
if(fi.Extension==".dwg"){
string parent = System.IO.Directory.GetParent(rootDir).FullName;
files.Add(parent);
}
}
foreach (string d in Directory.GetDirectories(rootDir))
{
files.AddRange(DirSearch(d));
}
}
catch
{
}
return files;
}
私有列表目录搜索(字符串rootDir)
{
列表文件=新列表();
尝试
{
foreach(Directory.GetFiles(rootDir)中的字符串f)
{
FileInfo fi=新的FileInfo(f);
如果(fi.Extension==“.dwg”){
字符串parent=System.IO.Directory.GetParent(rootDir.FullName);
文件。添加(父级);
}
}
foreach(Directory.GetDirectories(rootDir)中的字符串d)
{
AddRange(DirSearch(d));
}
}
抓住
{
}
归还文件;
}
您可以通过传递已知文件夹路径来调用此方法:
private List<String> DirSearch(string rootDir)
{
List<String> files = new List<String>();
try
{
foreach (string f in Directory.GetFiles(rootDir))
{
FileInfo fi = new FileInfo(f);
if(fi.Extension==".dwg"){
string parent = System.IO.Directory.GetParent(rootDir).FullName;
files.Add(parent);
}
}
foreach (string d in Directory.GetDirectories(rootDir))
{
files.AddRange(DirSearch(d));
}
}
catch
{
}
return files;
}
私有列表目录搜索(字符串rootDir)
{
列表文件=新列表();
尝试
{
foreach(Directory.GetFiles(rootDir)中的字符串f)
{
FileInfo fi=新的FileInfo(f);
如果(fi.Extension==“.dwg”){
字符串parent=System.IO.Directory.GetParent(rootDir.FullName);
文件。添加(父级);
}
}
foreach(Directory.GetDirectories(rootDir)中的字符串d)
{
AddRange(DirSearch(d));
}
}
抓住
{
}
归还文件;
}
目录
将包含唯一的目录路径(每个文件夹仅重复一次)
目录
将包含唯一的目录路径(每个文件夹仅重复一次)。Directory.GetFiles应该足够了。你试过了吗?Directory.GetFiles应该足够了。你试过了吗?Directory.GetFiles可以自己完成所有这一切。有一个重载,它使用文件模式和一个选项在子文件夹中执行递归搜索。不需要此代码。目录.GetFiles(rootDir,“*.dwg”,SearchOption.AllDirectories);我正在尝试检索一个包含规程名称和文件路径的列表,以防某些文件在某个目录中没有扩展名,并且由于这是一个递归,一个文件的问题不应停止整个处理。directory.GetFiles自行完成所有这一切。有一个重载,它使用文件模式和一个选项在子文件夹中执行递归搜索。不需要此代码。目录.GetFiles(rootDir,“*.dwg”,SearchOption.AllDirectories);我试图检索一个包含规程名称和文件路径的列表,以防某些文件存在于某个目录中而没有扩展名,并且由于这是一个递归,一个文件的问题不应停止整个处理。