C#遍歷文件夾及文件


背景:

  想自己實現一個網盤系統,於是需要用到遍歷文件(夾)操作。

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;
        }

 謝謝大家,本人主頁:OK121.CN,能力范圍內,承接小項目開發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM