背景:
想自己實現一個網盤系統,於是需要用到遍歷文件(夾)操作。
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,能力范圍內,承接小項目開發
