FindFirstFile, FineNextFile, FindClose
解决方案 »
- 使用CreateProcess建立的子进程,在程序崩溃后如何终止。
- PeekMessage()关于键盘消息
- 最近问题特别多,劳烦这里的高人了
- 一个关于树控件的问题
- 关于对话框改变大小的问题,100分送
- 请教:怎样能给系统中的.xxx文件指定一图标并双击后进入自己写的程序(像word和超级解霸等)
- 看看这个错误,在线等侯error C2440: '=' : cannot convert from 'char [21]' to 'unsigned char [21]'
- 我的程序中加不进对话框了,编译器总是告诉我:d:\..\showinfo.h(21) : error C2065: 'IDD_SHOWINFODLG' : undeclared identifier
- 如何获得一个回调函数中的数据
- 如何知道当前预览窗口显示的是哪个进程的窗口?
- 菜鸟请教:有关FindWindow函数问题,在线等待!!
- 兄弟们请注意啦:我要给分啦!!!!
_findfirst,_findnext,_findclose
结构用_finddata_t
CStringArray m_TempArray;
CString szTemplate = _T(m_strath+\\*.*");
BOOL bResult = finder.FindFile(szTemplate);//查找第一个文件
CString TemplateName;
while (bResult)
{
bResult=finder.FindNextFile();//查找下一个文件
if(finder.IsDots())
continue;
if(finder.IsDirectory())
TemplateName=finder.GetFileTitle();
m_TempArray.Add(TemplateName);//
}
{
CString cs(path);
WIN32_FIND_DATA data;
cs += "\\*.*";
HANDLE handle = FindFirstFile((LPCSTR)cs,&data);
BOOL ret = (BOOL)handle;
while(ret)
{
if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(data.cFileName[0] != '.') //IsDirectory
{
cs = path;
cs +="\\";
cs += data.cFileName;
EmuFiles((LPCSTR)cs);
}
}
else //is a file
{
cs = path;
cs +="\\";
cs += data.cFileName;
AfxMessageBox(cs); }
ret = FindNextFile(handle,&data);
}
FindClose(handle);
}
CString FileName=_T(" ");
// pList->ResetContent();//重新设置列表框内容
// TODO: Add your control notification handler code here
CString strFileName;
HANDLE FindHandle;
// 查找本文件目录下的文件
//添加新的整个驱动器的文件查询
CString CurDir1;
int i;
char AppPath[256];
::GetCurrentDirectory(256,AppPath);
for(i=0;i<4;i++)
CurDir1+=AppPath[i];
// CurDir1=CurDir1+"/0";
//
// ::SetCurrentDirectory(CurDir1);
for(i=0;i<CurDir.GetLength();i++)
CurDir1+=CurDir[i];
CurDir1=(LPCTSTR)AppPath ;
CurDir1=CurDir1+"\\"+CurDir;
FindHandle=::FindFirstFile((LPCTSTR)CurDir1,&MyFilePath);
// FindHandle=::FindFirstFile((LPCTSTR)("*.*"),&MyFilePath);
if(FindHandle==INVALID_HANDLE_VALUE)
{
// ::AfxMessageBox("查找文件错误!");
IsOver=TRUE;
} while(!IsOver)
{
FileName.Format("%s", MyFilePath.cFileName);
// if(CurDir.GetLength()!=0)
// strFileName=CurDir+"\\"+FileName;
// else
// strFileName=FileName;
// if(!FindNextFile(FindHandle,&MyFilePath))
// IsOver=FALSE;
if((MyFilePath.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)&&(MyFilePath.cFileName[0]!=_T('.')))
{
strFileName=FileName+"\\"+CurDir;
// ::SetCurrentDirectory(MyFilePath.cFileName);
FindFile(strFileName);
// ::SetCurrentDirectory("..");
}
else if(MyFilePath.cFileName[0]!=_T('.'))
pList.AddString(FileName);
FileNum++;
IsOver=!FindNextFile(FindHandle,&MyFilePath);
}
FindClose(FindHandle);
{CFileFind f;
BOOL bFind = f.FindFile(strParent + "*.*");
while(bFind)
{
bFind = f.FindNextFile();
if(f.IsDots()) continue;
if(f.IsDirectory())
{
FindAllFile(strParent + f.GetFileName() + "\\");
}
//(strParent + f.GetFileName())是文件名,处理文件
}
//处理目录(strParent);
}
//显示当前目录中的文件详细信息
FindFileData(CString strParent)
{
HANDLE hSearch;
WIN32_FIND_DATA ffd;
hSearch = FindFirstFile("*.*",&ffd);
if(hSearch==INVALID_HANDLE_VALUE)MessageBox("No Files");
else
{
//显示找到的文件的信息,文件的信息存到了ffd中
while(FindNextFile(hSearch,&ffd))
{ //显示找到的文件的信息,文件的信息存到了ffd中}
}
}
{
WIN32_FIND_DATA fd;
ANDLE hFind =::FindFirstFile(_T("*.*"),&fd);
if(hFind!=INVALID_HANDLE_VALUE)
{
do{
if(fd.dwFileAttributtes&FILE_ATTRIBUTE_DIRECTORY)
{
CString name =fd.cFileName;
if(name!=_T(".")&&name!=_T(".."))
{
TRACE(_T("%s\n"),fd.cFileName);
::SetCurrentDirectory(fd.CFileName);
EnumerateFolders();
::SetCurrentDirectory(_T(".."));
}
}
}while(::FindNextFile(hFind,&fd));
::FindClose(hFind);
}
}
相当好用。