차근차근/C

상위폴더경로로 하위폴더 검색

예쁜꽃이피었으면 2014. 9. 3. 17:52

http://imagej.tistory.com/category/Language?page=4


VS2010에서 작성할 때

빨간줄은 사라졌는데 실행이 잘 되는지는 모르겠다


CString은 출력할 때

wprintf(L"%s", 출력할 것  );

이런 식으로 해야 나오나 보다.





#include <afx.h> //CFileFind

#include <string>


using namespace std;



int main (){


CFileFind cFileFinder; // CFileFind객체선언

BOOL End_Of_Folder = false; // 폴더의 끝인가를 검사

CString m_strSelectPath;

CString Path ="C:/Users/hyunok/Desktop/설명.DB_TXT/image";

//string에서 CString으로 바꿈


WIN32_FIND_DATA  findFileData;

HANDLE hFileHandle;


m_strSelectPath = m_strSelectPath + "\\*.*";

cFileFinder.FindFile(Path); // 폴더를 검색해서 File을 찾은


End_Of_Folder = cFileFinder.FindNextFile(); //파일의 끝인지를 검사

//이걸 먼저 해주지 않고 바로 CFileFind::IsDirectory()를 호출하면 에러남


while(End_Of_Folder) //파일의 끝이 아니면 루푸를 돈다.

{

//다음 폴더가 있는지를 검사

End_Of_Folder = cFileFinder.FindNextFile();

//이걸 마지막에 하면 마지막 폴더가 검색 안됨




if(cFileFinder.IsDirectory())//현재 검색한 경로의 파일이 디렉토리인지 검사

{

if(cFileFinder.IsDots()) continue;

//[.][..]와 같은 상위폴더로 가는 루트가 나오면 다시

CString lowPath = cFileFinder.GetFilePath(); //검색된 folder의 Path를 가졍ㄴ다.


lowPath = lowPath + "\\*.bmp";//하위폴더에 원하는 확장자를 추가

//기존ForderSearch와 동일한 코드. 

//우선 folder내의 첫번째 File을 검색해서 핸들을 받아온다.

hFileHandle = FindFirstFile(lowPath,&findFileData);

int tempFileCount = 0;

if(hFileHandle != INVALID_HANDLE_VALUE)//원하는 파일이 있다면

{

tempFileCount ++; //FIle의 수를 count

while(FindNextFile(hFileHandle,&findFileData))//다음File검사

{

tempFileCount++;

}

FindClose(hFileHandle); // folder를 닫음

}



//부가기능 . 아래 코드는 folder의 개수와 file의 개수를 count한다.

//몇개가 될지 모르니까 동적으로 할당해 처리

int k = 0;

if( k==0 && tempFileCount != 0){

k++;

int *i = new int[k] ;

//i = new int[k];

i[0] = tempFileCount;

}

else if(k != 0 && tempFileCount != 0 )

{


int * i = new int[k * 1];

int *temp;

temp = i;


for (int j = 0; j < k; j++){

i[j] = temp[j];

}

i[k] = tempFileCount;

delete []temp;

k++;


}

//다음 폴더가 있는지 검사

//End_Of_Folder = cFileFinder.FIndNextFile();

}


}

}

반응형