国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
FindFirstFile的正確用法
void CFindFilesDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知處理程序代碼
CString c1;
CString stredit;
CString strtemp;
HANDLE hFile;
WIN32_FIND_DATA fileinfo;
DWORD errorcode = 0;
m_Edit1.GetWindowText(c1);   //要熟悉控件的基本使用
if(!c1.IsEmpty())
{
       hFile=FindFirstFile("f:\\*.*",&fileinfo);
    while(hFile!=INVALID_HANDLE_VALUE&&errorcode!=ERROR_NO_MORE_FILES)
    {
     //
   strtemp=fileinfo.cFileName;
   stredit=stredit+"\r\n";
   stredit=stredit+strtemp;
   FindNextFile(hFile,&fileinfo);
   errorcode=GetLastError();
    }
    if(errorcode==ERROR_NO_MORE_FILES)
    {
     m_cedit1.SetWindowText(stredit);
     MessageBox("檢索結(jié)束");
    }
    CloseHandle(hFile);
}
}


在上述代碼中

FindFirstFile第一個(gè)個(gè)參數(shù)需要一個(gè)路徑,但要寫*.*,表示從所有文件中找到的第一個(gè).但寫f:或者f:雙斜杠都返回?zé)o效句柄.

如果f:\\1.txt 則對(duì)特定文件進(jìn)行搜索,返回找到的第一個(gè)

找到的文件的文件結(jié)構(gòu)被記錄在WIN32_FIND_DATA結(jié)構(gòu)體里

FindNextFile第一個(gè)參數(shù)是FindFirstFile的返回值,可以接著上次結(jié)果繼續(xù)尋找

但注意!!!!

但一個(gè)目錄的文件被搜索一遍后,FindNextFile返回的WIN32_FIND_DATA結(jié)構(gòu)體將重復(fù)找到最后一個(gè)找到的文件,而不會(huì)終止.

讓循環(huán)結(jié)束的方法就是找上一次的報(bào)錯(cuò)碼,然后看有沒(méi)有ERROR_NO_MORE_FILES信息發(fā)生.

hFile的有效與否個(gè)人覺(jué)得還是取決于第一次的FindFirstFile結(jié)果,本程序后半段的運(yùn)行主要還是errorcode!=ERROR_NO_MORE_FILES在控制.

使用FindFirstFile和FindNextFile查找某個(gè)目錄下的所有文件(包括子目錄)

一、在不使用mfc的程序中獲得某個(gè)目錄下的所有文件名稱,包括子目錄。把文件名稱以一個(gè)固定的程度放入一個(gè)緩沖中,這個(gè)緩沖要足夠的大,能容下所有的文件名稱。

函數(shù)的輸入為要查找的根目錄,輸出為存放所有文件名稱的緩沖

算法:使用遞歸

二、代碼:

void FindFileInDir(char* rootDir, char* strRet)

{

    char fname[MAC_FILENAMELENOPATH];

    ZeroMemory(fname, MAC_FILENAMELENOPATH);

    WIN32_FIND_DATA fd;

    ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));

    HANDLE hSearch;

    char filePathName[256];

    char tmpPath[256];

    ZeroMemory(filePathName, 256);

    ZeroMemory(tmpPath, 256);

    strcpy(filePathName, rootDir);

    BOOL bSearchFinished = FALSE;

    if( filePathName[strlen(filePathName) -1] != '\\' )

    {

       strcat(filePathName, "\\");

    }

    strcat(filePathName, "*");

    hSearch = FindFirstFile(filePathName, &fd);

    //Is directory

    if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

       && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )      

    {

       strcpy(tmpPath, rootDir);

       strcat(tmpPath, fd.cFileName);

       FindFileInDir(tmpPath, strRet);

    }

   

    else   if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )

              {

                  sprintf(fname, "%-50.50s", fd.cFileName);

                  strcat(strRet + strRet[strlen(strRet)] , fname);

              }

    while( !bSearchFinished )

    {

       if( FindNextFile(hSearch, &fd) )

       {

           if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

              && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )      

           {

              strcpy(tmpPath, rootDir);

              strcat(tmpPath, fd.cFileName);

              FindFileInDir(tmpPath, strRet);

           }

   

           else   if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )

                     {

                         sprintf(fname, "%-50.50s", fd.cFileName);

                         strcat(strRet + strRet[strlen(strRet)] , fname);

                     }

       }

       else

       {

           if( GetLastError() == ERROR_NO_MORE_FILES )          //Normal Finished

           {

              bSearchFinished = TRUE;

           }

           else

              bSearchFinished = TRUE;     //Terminate Search

       }

    }

    FindClose(hSearch);

    }

本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/caimouse/archive/2007/10/25/1844006.aspx

Windows API一日一練(58)FindFirstFile和FindNextFile函數(shù) 收藏
在開(kāi)發(fā)軟件的過(guò)程里,經(jīng)常需要維護(hù)目錄里的數(shù)據(jù)。比如在開(kāi)發(fā)銀行的信用卡系統(tǒng)里,由于每天創(chuàng)建的LOG非常多,那么一個(gè)很大的硬盤,在6個(gè)月后,就占用了很多空間。這時(shí)就有這樣的一個(gè)需求,把所有超過(guò)6個(gè)月的LOG數(shù)據(jù)定期刪除掉。要實(shí)現(xiàn)這個(gè)功能就得遍歷整個(gè)目錄,把文件名稱和文件創(chuàng)建的時(shí)間都超過(guò)6個(gè)月時(shí)間的文件刪除掉。因此,就需使用到下面的API函數(shù)FindFirstFile和FindNextFile來(lái)實(shí)現(xiàn)這樣的功能,F(xiàn)indFirstFile函數(shù)是查找到目錄下的第一個(gè)文件或目錄,F(xiàn)indNextFile函數(shù)是查找下一文件或目錄。


函數(shù)FindFirstFile、FindNextFile和FindClose聲明如下:

WINBASEAPI
__out
HANDLE
WINAPI
FindFirstFileA(
    __in LPCSTR lpFileName,
    __out LPWIN32_FIND_DATAA lpFindFileData
    );
WINBASEAPI
__out
HANDLE
WINAPI
FindFirstFileW(
    __in LPCWSTR lpFileName,
    __out LPWIN32_FIND_DATAW lpFindFileData
    );
#ifdef UNICODE
#define FindFirstFile FindFirstFileW
#else
#define FindFirstFile FindFirstFileA
#endif // !UNICODE

WINBASEAPI
BOOL
WINAPI
FindNextFileA(
    __in HANDLE hFindFile,
    __out LPWIN32_FIND_DATAA lpFindFileData
    );
WINBASEAPI
BOOL
WINAPI
FindNextFileW(
    __in HANDLE hFindFile,
    __out LPWIN32_FIND_DATAW lpFindFileData
    );
#ifdef UNICODE
#define FindNextFile FindNextFileW
#else
#define FindNextFile FindNextFileA
#endif // !UNICODE

WINBASEAPI
BOOL
WINAPI
FindClose(
    __inout HANDLE hFindFile
    );

lpFileName是目錄名稱。一般使用通配符。
lpFindFileData是找到的文件或目錄屬性。
hFindFile是下一個(gè)文件或目錄的句柄。

調(diào)用函數(shù)的例子如下:
#001 #pragma once
#002
#003 //
#004 //遍歷一個(gè)目錄的文件。
#005 //蔡軍生 2007/10/25 QQ:9073204 深圳
#006 //
#007 class CFindFile
#008 {
#009 public:
#010
#011 CFindFile(void)
#012 {
#013          m_hFind = INVALID_HANDLE_VALUE;
#014          m_bFound = false;
#015         memset(&m_FindFileData,0,sizeof(m_FindFileData));
#016 }
#017
#018 ~CFindFile(void)
#019 {
#020         if (m_hFind != INVALID_HANDLE_VALUE)
#021         {
#022              ::FindClose(m_hFind);
#023         }
#024 }
#025
#026 //找到第一個(gè)文件。
#027 void First(LPCTSTR lpFileName)
#028 {
#029         m_hFind = ::FindFirstFile(lpFileName,&m_FindFileData);
#030         if (m_hFind != INVALID_HANDLE_VALUE)
#031         {
#032                m_bFound = true;
#033         }
#034         else
#035         {
#036                m_bFound = false;
#037         }
#038 }
#039
#040 //查找一下文件。
#041 void Next(void)
#042 {
#043         m_bFound = FindNextFile(m_hFind, &m_FindFileData) ? true:false;
#044 }
#045
#046 //是否可以查找一下文件。
#047 bool IsOK(void) const
#048 {
#049         return m_bFound;
#050 }
#051
#052 //返回當(dāng)前文件的屬性。
#053 const WIN32_FIND_DATA& GetCurFile(void)
#054 {
#055         return m_FindFileData;
#056 }
#057
#058 protected:
#059 HANDLE m_hFind; //保存當(dāng)查找的位置句柄。
#060 bool m_bFound; //當(dāng)前查找是否成功。
#061 WIN32_FIND_DATA m_FindFileData;//保存當(dāng)前文件的屬性。
#062
#063 };
#064

使用如下:
#001 //查找文件。
#002               CFindFile findDemo;
#003               for (findDemo.First(_T(".\\*"));
#004                    findDemo.IsOK();
#005                    findDemo.Next())
#006               {
#007                    //
#008                    OutputDebugString(findDemo.GetCurFile().cFileName);
#009                    OutputDebugString(_T("\r\n"));
#010               }
#011

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
獲得一個(gè)目錄下的文件名
使用FindFirstFile,FindNextFile遍歷一個(gè)文件夾
vs2008中遍歷文件夾中的文件
兩種方法使用VC遍歷文件夾下所有文件和文件夾
文件夾的遍歷掃描
VC遍歷文件夾下所有文件和文件夾
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服