安然不哭-西坝阿超个人博客

做技术一定要一颗恒心,这样才不会半途而废。

C#遍历文件夹及文件

2018-9-9 钟建超

C#基本知识梳理:
1.如何获取指定目录包含的文件和子目录  

(1). DirectoryInfo.GetFiles():获取目录中(不包含子目录)的文件,返回类型为FileInfo[],支持通配符查找;  

(2). DirectoryInfo.GetDirectories():获取目录(不包含子目录)的子目录,返回类型为DirectoryInfo[],支持通配符查找;  

(3). DirectoryInfo. GetFileSystemInfos():获取指定目录下(不包含子目录)的文件和子目录,返回类型为FileSystemInfo[],支持通配符查找;

2.如何获取指定文件的基本信息;  

FileInfo.Exists:获取指定文件是否存在;  

FileInfo.Name,FileInfo.Extensioin:获取文件的名称和扩展名;  

FileInfo.FullName:获取文件的全限定名称(完整路径);  

FileInfo.Directory:获取文件所在目录,返回类型为DirectoryInfo;  

FileInfo.DirectoryName:获取文件所在目录的路径(完整路径);  

FileInfo.Length:获取文件的大小(字节数);  

FileInfo.IsReadOnly:获取文件是否只读;  

FileInfo.Attributes:获取或设置指定文件的属性,返回类型为FileAttributes枚举,可以是多个值的组合  

FileInfo.CreationTime、FileInfo.LastAccessTime、FileInfo.LastWriteTime:分别用于获取文件的创建时间、访问时间、修改时间;

三、基本方法的运用:




方法一:利用递归方法

List<String> list = new List<string>();

       public List<string> FindFile(string sSourcePath )

       {


           //在指定目录及子目录下查找文件,在list中列出子目录及文件

           DirectoryInfo Dir = new DirectoryInfo(sSourcePath);


           DirectoryInfo[] DirSub = Dir.GetDirectories();

           if (DirSub.Length <= 0)

           {

               foreach (FileInfo f in Dir.GetFiles("*.*", SearchOption.TopDirectoryOnly)) //查找文件

               {

                   //listBox1.Items.Add(Dir+f.ToString()); //listBox1中填加文件名

                   list.Add(Dir + @"\" + f.ToString());

               }

           }


           int t = 1;

           foreach (DirectoryInfo d in DirSub)//查找子目录 

           {

               FindFile(Dir + @"\" + d.ToString());

               list.Add(Dir + @"\" + d.ToString());

               if (t == 1)

               {

                   foreach (FileInfo f in Dir.GetFiles("*.*", SearchOption.TopDirectoryOnly)) //查找文件

                   {

                       list.Add(Dir + @"\" + f.ToString());

                   }

                   t = t + 1;

               }

           }           

           return list;


       }


方法二:

public List<string> FindFile2(string sSourcePath)

       {

           List<String> list = new List<string>();

           //遍历文件夹

           DirectoryInfo theFolder = new DirectoryInfo(sSourcePath);

           FileInfo[] thefileInfo = theFolder.GetFiles("*.*", SearchOption.TopDirectoryOnly);

           foreach (FileInfo NextFile in thefileInfo)  //遍历文件

               list.Add(NextFile.FullName);


           //遍历子文件夹

           DirectoryInfo[] dirInfo = theFolder.GetDirectories();

           foreach (DirectoryInfo NextFolder in dirInfo)

           {

               //list.Add(NextFolder.ToString());

               FileInfo[] fileInfo = NextFolder.GetFiles("*.*", SearchOption.AllDirectories);

               foreach (FileInfo NextFile in fileInfo)  //遍历文件

                   list.Add(NextFile.FullName);


           }           

           return list;
       }

标签: c#