1. 程式人生 > >文件夾、文件操作

文件夾、文件操作

adk each second lis earch diag sts spa 子目錄

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var path = @"E:\GIT";
            //遞歸遍歷文件夾
            Stopwatch sw = new Stopwatch();

            
//遍歷所有文件夾和文件 sw.Reset(); sw.Start(); all(path); sw.Stop(); Console.WriteLine("耗時:{0}", sw.ElapsedMilliseconds); sw.Start(); ListFiles(new DirectoryInfo(path), "-"); sw.Stop(); Console.WriteLine(
"耗時:{0}", sw.ElapsedMilliseconds); //廣度優先遍歷文件夾 sw.Reset(); sw.Start(); Traversing(path); sw.Stop(); Console.WriteLine("耗時:{0}", sw.ElapsedMilliseconds); Console.ReadKey(); } /// <summary>
/// 遞歸遍歷文件夾 /// </summary> /// <param name="info"></param> /// <param name="dep"></param> public static void ListFiles(FileSystemInfo info,string dep) { if (!info.Exists) return; DirectoryInfo dir = info as DirectoryInfo; if (dir == null) return; FileSystemInfo[] files = dir.GetDirectories(); foreach (var file in files) { if (file != null) { //Console.WriteLine("{0}{1}", dep, file.Name); //dep = dep + "-"; ListFiles(file, dep); } } } /// <summary> /// 廣度優先算法遍歷文件夾 /// </summary> /// <param name="sPathName"></param> public static void Traversing(string sPathName) { //創建一個隊列保存子目錄 Queue<string> pathQueue = new Queue<string>(); //首先將根目錄排入隊列中 pathQueue.Enqueue(sPathName); //開始循環查找文件,知道隊列中無任何子目錄 while (pathQueue.Count > 0) { //從隊列中取出一個目錄,把該目錄下的所有目錄排入隊列中 DirectoryInfo dirParent = new DirectoryInfo(pathQueue.Dequeue()); foreach (var diChild in dirParent.GetDirectories()) { pathQueue.Enqueue(diChild.FullName); foreach (var fi in dirParent.GetFiles()) { // Console.WriteLine(fi.Name); } } } } public static void all(string path) { var x = 0; //獲取所有文件 foreach (string f in Directory.GetFiles(path, "*", SearchOption.AllDirectories)) { //Console.WriteLine(f); x++; } //獲取所有文件夾,只遍歷文件的話似乎跟上面兩個算法少了一步,所以又遍歷了所有文件夾 foreach (string f in Directory.GetDirectories(path, "*", SearchOption.AllDirectories)) { //Console.WriteLine(f); x++; } } } }

文件夾、文件操作