C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径

C#如何遍历指定目录以及指定目录下所有子文件夹,并获取除指定文件类型以外的所有文件的绝对路径,第1张

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#怎么读取某一文件夹下的所有文件夹和文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9659543.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存