C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径?相关的知识,希望对你有一定的参考价值。
比如排除的后缀名存在一个string类型数组exception中。我要获取目录path(string类型变量)及其下所有目录和子目录下除了后缀名是exception中的元素的文件 以外的所有文件的文件名(绝对路径)并保存在string类型的Item数组中,该怎么做?请大神指教,最好是有写好的函数(返回值:Item数组 参数:string path,string[] exception)谢谢!
using System;using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
class Program
ArrayList Item = new ArrayList(); //动态数组保存文件名
static void Main(string[] args)
Program pg = new Program();
string[] except = new string[] ".exe";
pg. Text(@"E:\\text", except);
for (int i = 0; i < pg.Item.Count; i++)
Console.WriteLine (pg.Item[i]);
Console.ReadKey();
public ArrayList Text(string path, string[] exception)
int j = 0;
DirectoryInfo search = new DirectoryInfo(path); //
//获取目录path下所有目录和子目录下的文件
FileSystemInfo[] fsinfos = search.GetFileSystemInfos();
//遍历目录下文件及其子目录下文件
foreach (FileSystemInfo fsinfo in fsinfos)
if (fsinfo is DirectoryInfo) //判断是否为文件夹
DirectoryInfo dtinfo = new DirectoryInfo(fsinfo.FullName);
FileInfo[] f = dtinfo.GetFiles();//获取子目录下的文件
foreach (FileInfo file in f)
for (int i = 0; i < exception.Length; i++)
if (file.Name.Contains(exception[i]) == false)
Item.Add (file.FullName);
j++;
else
for (int i = 0; i < exception.Length; i++)
if (fsinfo.Name.Contains(exception[i]) == false)
Item.Add (fsinfo.FullName);
j++;
return Item ;
追问
感谢回答!
还有,有一个问题:
只能遍历到指定目录的下一层子目录,而我想像bat的
for /r e: %%i in (*) do echo %%i
这样的遍历所有层的文件并筛选(就像windows的查找功能,只不过我是想排除指定文件类型而查找是搜寻指定文件类型)
请问如何实现?谢谢!
如果能解决,一定采纳!
if (fsinfo is DirectoryInfo) //判断是否为文件夹
//DirectoryInfo dtinfo = new DirectoryInfo(fsinfo.FullName);
//FileInfo[] f = dtinfo.GetFiles();//获取子目录下的文件
//foreach (FileInfo file in f)
//
// for (int i = 0; i < exception.Length; i++)
//
// if (file.Name.Contains(exception[i]) == false)
//
// Item.Add(file.FullName);
//
//
//
//递归遍历更深层次文件夹
Text(fsinfo.FullName, exception);
参考技术A 递归遍历文件夹,在遍历的过程中判断并添加到数组。 参考技术B 获得 文件夹下的所有文件:string[] filestrs= System.IO.Directory.GetFiles(文件夹地址);
foreach(var obj in filestrs)
FileInfo fi=new FileInfo(obj);
if(string.Compare(fi.Extension,"后缀名",true))
//排除掉
PHP遍历并打印指定目录下所有文件实例
参考技术A 这篇文章主要介绍了PHP遍历并打印指定目录下所有文件实例,需要的朋友可以参考下代码如下:
<?php
//功能:遍历并打印指定目录下所有文件
function
scan_dir($dir_name,$dir_flag=1)
static
$FILE_COUNT=1;
//记录文件数目
初值为1
目录名称不记
$FILE_COUNT--;
//每调用一次scan_dir()函数自减1
@$dir_handle=opendir($dir_name);
//抑制错误信息显示
便于自定义错误显示
if(!$dir_handle)
die("目录打开错误!");
while(false!==($filename=readdir($dir_handle)))
//文件名为‘0'时,readdir返回
FALSE,判断返回值是否不全等
$flag=$dir_flag;
//古怪的
is_dir($filename)
!
$filename这个路径必须能够寻到!当$filename不存在或者不是目录时返回false
if($filename!='.'&&$filename!='..')
$FILE_COUNT++;
//不记录当前路径和上一级路径
while($flag>0&&--$flag)
//负数仍为真
echo
'
';
if(is_dir($dir_name.$filename))
//判断
是否为一个目录
echo
'<strong>'."<a
href=".$dir_name.$filename.">".$filename."</a></strong><br>";
scan_dir($dir_name.$filename.'/',$dir_flag+1);
//$dir_flag标志目录树层次
else
echo
"<a
href=".$dir_name.$filename.">".$filename."</a><br>";
closedir($dir_handle);
//关闭目录句柄
echo
"文件总数:".$FILE_COUNT.'<br>';
scan_dir('D:wampwwwtestlamp61');
//指定的文件路径
?>
以上是关于C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径?的主要内容,如果未能解决你的问题,请参考以下文章