程序使用Directory、DirectoryInfo類
- Directory.GetCurrentDirectory()獲得當前運行程序的路徑
- DirectoryInfo對象.GetDirectories()獲得該文件夾下的子目錄,返回類型為DirectoryInfo
- DirectoryInfo對象.GetFiles()獲得該文件夾下的文件,返回類型為FileInfo
- DirectoryInfo對象.Name獲得文件夾名
- DirectoryInfo對象.FullName獲得文件夾完整的路徑名
- FileInfo對象.Name 和 FileInfo對象.FullName 同理
程序使用以上方法,遞歸地輸出當前運行程序所在的磁盤下的所有文件名和子目錄名,並將結果保存在指定的txt文件中
class Program { static void Main(string[] args) { //獲取當前程序所在的文件路徑 String path = Directory.GetCurrentDirectory(); String path2 = path.Substring(0, 3); //取盤符 StreamWriter sw=null; try{ //創建輸出流,將得到文件名子目錄名保存到txt中 sw = new StreamWriter(new FileStream("files.txt",FileMode.Append)); sw.WriteLine("根目錄:" + path2); getDirectory(sw,path2, 2); } catch(IOException e) { Console.WriteLine(e.Message); } finally { if (sw != null) { sw.Close(); Console.WriteLine("完成"); } } } /* * 獲得指定路徑下所有文件名 * StreamWriter sw 文件寫入流 * string path 文件路徑 * int indent 輸出時的縮進量 */ public static void getFileName(StreamWriter sw, string path,int indent) { DirectoryInfo root = new DirectoryInfo(path); foreach(FileInfo f in root.GetFiles()) { for (int i = 0; i < indent; i++) { sw.Write(" "); } sw.WriteLine(f.Name); } } //獲得指定路徑下所有子目錄名 public static void getDirectory(StreamWriter sw, string path,int indent) { getFileName(sw,path,indent); DirectoryInfo root = new DirectoryInfo(path); foreach(DirectoryInfo d in root.GetDirectories()) { for(int i = 0; i < indent; i++) { sw.Write(" "); } sw.WriteLine("文件夾:"+d.Name); getDirectory(sw,d.FullName,indent+2); sw.WriteLine(); } } }
結果:

