
using System;
using SystemCollections;
using SystemCollectionsGeneric;
using SystemIO;
using SystemLinq;
using SystemText;
using SystemThreadingTasks;
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 < pgItemCount; i++)
{
ConsoleWriteLine (pgItem[i]);
ConsoleReadKey();
}
}
public ArrayList Text(string path, string[] exception)
{ int j = 0;
DirectoryInfo search = new DirectoryInfo(path); //
//获取目录path下所有目录和子目录下的文件
FileSystemInfo[] fsinfos = searchGetFileSystemInfos();
//遍历目录下文件及其子目录下文件
foreach (FileSystemInfo fsinfo in fsinfos)
{
if (fsinfo is DirectoryInfo) //判断是否为文件夹
{
DirectoryInfo dtinfo = new DirectoryInfo(fsinfoFullName);
FileInfo[] f = dtinfoGetFiles();//获取子目录下的文件
foreach (FileInfo file in f)
{
for (int i = 0; i < exceptionLength; i++)
{
if (fileNameContains(exception[i]) == false)
{
ItemAdd (fileFullName);
j++;
}
}
}
}
else
{
for (int i = 0; i < exceptionLength; i++)
{
if (fsinfoNameContains(exception[i]) == false)
{
ItemAdd (fsinfoFullName);
j++;
}
}
}
}
return Item ;
}
}
}
我们要遍历所有的路径,需要使用到javaioFile类,该类中有一个方法File[] listFiles();可以返回该文件下面所包含的所有子文件,String getPath();返回文件的全名称(包括路径),String getName(); 返回文件名。首先,我们先来遍历一下D盘根目录下所有的子文件:public static void fileList() { File file=new File("d:/"); File[] files = filelistFiles(); if (files != null) { for (File f : files) { Systemoutprintln(fgetPath()); } } }对此,我们肯定不满足,我们需要遍历D盘下所有的文件和文件夹,而不是根目录下的文件夹,这个时候我们需要使用到递归:public static void fileList(File file) { File[] files = filelistFiles(); if (files != null) { for (File f : files) { Systemoutprintln(fgetPath()); fileList(f); } } }然后在主函数中调用:public static void main(String[] args) { File file=new File("d:/"); fileList(file); }结果是不是能令你满意呢?显然,输出的都是全路径,我们可以对我们的递归函数做如下改进: public static void fileList(File file,int node) { node++; File[] files = filelistFiles(); if (files != null) { for (File f : files) { for(int i=0;i<node;i++){ if(i==node-1){ Systemoutprint("├"); } else{ Systemoutprint(" "); } } Systemoutprintln(fgetName()); fileList(f,node); } } }然后再次在主函数中调用:public static void main(String[] args) { File file=new File("d:/"); fileList(file,0); }得到的结果是一个类似树状的结构,如果你对此还不满意,可以尝试给JTree上添加节点,可以做到和资源管理器中一样的结构。
static List<string> list = new List<string>();//定义list变量,存放获取到的路径
public static List<string> getPath(string path)
{
DirectoryInfo dir = new DirectoryInfo(path);
FileInfo[] fil = dirGetFiles();
DirectoryInfo[] dii = dirGetDirectories();
foreach (FileInfo f in fil)
{
listAdd(fFullName);//添加文件的路径到列表
}
//获取子文件夹内的文件列表,递归遍历
foreach (DirectoryInfo d in dii)
{
getPath(dFullName);
listAdd(dFullName);//添加文件夹的路径到列表
}
return list;
}
调用此函数需要传入指定的文件夹路径,如 D:\MyFile 可以将该文件夹下的文件和子文件夹路径全部获取,并利用递归,获取子文件夹内所有内容。
这意思是,提取当前目录下(在本行”>“左边就是当前目录)
1所有文件夹下的所有文件(/s的意义,递归遍历所有文件),
2这些文件的属性无关紧要(/a的意义,如果是/a[a-z],后面有跟东西的话,那是指定属性)
3文件名形式是(的意思,也就是任何文件)
满足以上条件文件的文件名(/b的含义,所以没有修改时间,目录等具体信息),存入当前目录下一个叫做"Atxt"的文件里(>Atxt的意义,如果Atxt不存在,则会新建,如果存在,则会覆盖)
我也在学习中,=。=
以上就是关于C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径全部的内容,包括:C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径、在java中如何遍历某个路径下的所有文件夹和文件、C#怎么读取某一文件夹下的所有文件夹和文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)