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

VC++ 實現檔案搜尋功能:FindFirstFile/FindNextFile 實戰

     編輯:關於VC++

前言

Windows API 提供 FindFirstFile、FindNextFile、FindClose 三個函數實現檔案搜尋,本文給出最簡單的 MFC 對話框實作範例。

搜尋介面示意

API 介紹

  • HANDLE FindFirstFile(LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData):開始搜尋,回傳搜尋控制代碼。
  • BOOL FindNextFile(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData):繼續搜尋下一個。
  • BOOL FindClose(HANDLE hFindFile):關閉搜尋控制代碼。

WIN32_FIND_DATA 結構包含檔案名 (cFileName)、屬性、大小、時間等資訊。

實作程式碼

void CFileSearchDlg::OnSearch()
{
    UpdateData();
    if (!m_strFile.GetLength()) {
        AfxMessageBox("請輸入要搜尋的檔案");
        return;
    }

    WIN32_FIND_DATA fd;
    m_listFile.ResetContent();  // 清空列表方塊

    HANDLE hFind = ::FindFirstFile((LPCTSTR)m_strFile, &fd);
    if (hFind == INVALID_HANDLE_VALUE) return;

    m_listFile.AddString(fd.cFileName);  // 第一個結果

    while (::FindNextFile(hFind, &fd))   // 迴圈取得後續結果
        m_listFile.AddString(fd.cFileName);

    ::FindClose(hFind);  // 釋放資源
}

說明

  • m_strFile:編輯框輸入的搜尋路徑/檔名 (支援萬用字元 *, ?)。
  • m_listFile:列表方塊顯示結果。
  • 此範例僅搜尋單一目錄;若需遞迴搜尋子目錄,需自行實作遞迴邏輯 (參考文章 8434 ffsco 類別)。

結語

掌握三個 API 即可快速加入檔案搜尋功能。完整專案原始碼請下載附件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved