首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 資料夾瀏覽對話框與遞迴檔案搜尋實作

     編輯:關於C#

自訂資料夾瀏覽對話框

利用 System.Windows.Forms.Design.FolderNameEditor 內建的 FolderBrowser 類別,封裝功能更豐富的選擇目錄元件:

using System;
using System.Windows.Forms;
using System.Windows.Forms.Design;

public class FolderDialog : IDisposable
{
    private readonly FolderNameEditor.FolderBrowser _browser;

    public FolderDialog()
    {
        _browser = new FolderNameEditor.FolderBrowser();
        _browser.Style = FolderBrowserStyles.BrowseForEverything | FolderBrowserStyles.ShowTextBox;
        _browser.StartLocation = FolderBrowserFolder.MyComputer;
    }

    public DialogResult ShowDialog(string description = "請選擇資料夾")
    {
        _browser.Description = description;
        return _browser.ShowDialog();
    }

    public string SelectedPath => _browser.DirectoryPath;

    public void Dispose() => _browser.Dispose();
}

使用範例

public string GetSelectedFolder()
{
    using (var dlg = new FolderDialog())
    {
        return dlg.ShowDialog() == DialogResult.OK ? dlg.SelectedPath : string.Empty;
    }
}

※ 需參考 System.Design.dll 組件。

遞迴搜尋特定副檔名檔案

public void GetFilesRecursive(string rootPath, string pattern, List<string> result)
{
    var dir = new DirectoryInfo(rootPath);
    try
    {
        // 取得符合模式的檔案
        foreach (var file in dir.GetFiles(pattern))
        {
            if ((file.Attributes & FileAttributes.Hidden) == 0)
                result.Add(file.FullName);
        }

        // 遞迴子目錄
        foreach (var subDir in dir.GetDirectories())
        {
            if ((subDir.Attributes & FileAttributes.Hidden) == 0)
                GetFilesRecursive(subDir.FullName, pattern, result);
        }
    }
    catch (UnauthorizedAccessException) { /* 忽略無權限目錄 */ }
}

呼叫方式

var files = new List<string>();
GetFilesRecursive(@"D:\Projects", "*.cs", files);
// files 即包含所有 .cs 檔案完整路徑
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved