📄 cefindfile.cpp
字号:
#include "CeFindFile.h"
CCeFindFile::CCeFindFile()
{
m_pfiledata = NULL;
m_pNextdata = NULL;
m_hFileHandle = INVALID_HANDLE_VALUE;
ptRootPath = NULL;
}
CCeFindFile::~CCeFindFile()
{
CloseFind();
}
BOOL CCeFindFile::FindFile(PTCHAR ptFileName)
{
CloseFind();
ptRootPath = new TCHAR[MAX_FILEPATH];
m_pNextdata = new WIN32_FIND_DATA;
GetRootPath(ptFileName);
//查找文件
m_hFileHandle = ::FindFirstFile( ptFileName, m_pNextdata );
DWORD dwlasterror = GetLastError();
if ( m_hFileHandle == INVALID_HANDLE_VALUE )
{//未找到文件
CloseFind();
return FALSE;
}
return TRUE;
}
BOOL CCeFindFile::FindFile(PTCHAR ptFilePath, PTCHAR ptcFileName)
{
TCHAR tcFullPathName[MAX_FILEPATH] = {0};
DWORD dwFullPathLen = wcslen(ptFilePath) - 1;
wcscpy(tcFullPathName, ptFilePath);
if (_T('\\') != tcFullPathName[dwFullPathLen])
wcscat(tcFullPathName, _T("\\"));
wcscat(tcFullPathName, ptcFileName);
if (FALSE == FindFile(tcFullPathName))
return FALSE;
return TRUE;
}
BOOL CCeFindFile::FindNextFile()
{
if (m_hFileHandle == NULL)
return FALSE;
if (m_pfiledata == NULL)
m_pfiledata = new WIN32_FIND_DATA;
LPWIN32_FIND_DATA pTemp = m_pfiledata;
m_pfiledata = m_pNextdata;
m_pNextdata = pTemp;
return ::FindNextFile(m_hFileHandle, m_pNextdata);
}
void CCeFindFile::CloseFind()
{
DELETE_POINTER(m_pfiledata);
DELETE_POINTER(m_pNextdata);
DELETE_POINTER(ptRootPath);
if( m_hFileHandle != NULL && m_hFileHandle != INVALID_HANDLE_VALUE )
{
::FindClose(m_hFileHandle);
m_hFileHandle = NULL;
}
}
//查找一个文件夹下的所有文件,并保存到列表中,
// ptDirectory : 路径 _T("\\CortoiFlash")
// ptSuffixName : 后缀名(_T(".mp3")),NULL表示查找所有
BOOL CCeFindFile::FindFileList(PTCHAR ptDirectory, PTCHAR ptSuffixName, DWORD& dwTotalFiles)
{
TCHAR FileNameForFind[MAX_FILEPATH] = {0};
DWORD i = 0;
m_pFileList = new FILE_LIST[512];
wcscpy(FileNameForFind, ptDirectory);
if (NULL == ptSuffixName)
{
if (_T('\\') == ptDirectory[wcslen(ptDirectory) - 1])
{
wcscat(FileNameForFind, _T("*.*"));
}
else
{
wcscat(FileNameForFind, _T("\\*.*"));
}
}
else
{
FindDirectoryFolders(ptDirectory, m_pFileList, i);
wcscat(FileNameForFind, _T("\\*"));
wcscat(FileNameForFind, ptSuffixName);
}
BOOL bRetValue = FALSE;
bRetValue = FindFile(FileNameForFind);
if (FALSE == bRetValue)
return FALSE;
while (TRUE)
{
bRetValue = FindNextFile();
//////////////////////////////////////////////////////////////////////////
//添加受保护文件名
//////////////////////////////////////////////////////////////////////////
m_pFileList[i].dwFileType = m_pfiledata->dwFileAttributes;
wcscpy(m_pFileList[i].FileName, m_pfiledata->cFileName);
i++;
if (i > 512)
break;
if (FALSE == bRetValue)
{
if (ERROR_NO_MORE_FILES == GetLastError())
break;
else
return FALSE;
}
}
dwTotalFiles = i;
return TRUE;
}
BOOL CCeFindFile::FindDirectoryFolders(PTCHAR ptcDirectory, PFILE_LIST ForSave, DWORD& dwTotalFolder)
{
TCHAR FileNameForFind[MAX_FILEPATH] = {0};
DWORD i = 0;
wcscpy(FileNameForFind, ptcDirectory);
wcscat(FileNameForFind, _T("\\*.*"));
BOOL bRetValue = FALSE;
bRetValue = FindFile(FileNameForFind);
if (FALSE == bRetValue)
return FALSE;
while (TRUE)
{
bRetValue = FindNextFile();
if(IsDirectory())
{
m_pFileList[i].dwFileType = m_pfiledata->dwFileAttributes;
wcscpy(m_pFileList[i].FileName, m_pfiledata->cFileName);
i++;
}
if (i > 512)
break;
if (FALSE == bRetValue)
{
if (ERROR_NO_MORE_FILES == GetLastError())
break;
else
return FALSE;
}
}
dwTotalFolder = i;
return TRUE;
}
BOOL CCeFindFile::GetFileName(PTCHAR ptFileName)
{
if (m_pfiledata != NULL)
wcscpy(ptFileName, m_pfiledata->cFileName);
else
return FALSE;
return TRUE;
}
BOOL CCeFindFile::GetFilePath(PTCHAR ptFilePath)
{
if (m_pfiledata != NULL)
{
wcscpy(ptFilePath, ptRootPath);
wcscat(ptFilePath, m_pfiledata->cFileName);
}
else
{
return FALSE;
}
return TRUE;
}
BOOL CCeFindFile::AddFilePath(const PTCHAR ptFileName, PTCHAR ptFilePath)
{
wcscpy(ptFilePath, ptRootPath);
wcscat(ptFilePath, ptFileName);
return TRUE;
}
void CCeFindFile::GetRootPath(const PTCHAR ptFileName)
{
INT i = 0;
DWORD dwStrLen = wcslen(ptFileName);
wcscpy(ptRootPath, ptFileName);
for (i = dwStrLen; i > 0; i--)
{
if (ptRootPath[i] == _T('\\'))
{
break;
}
else
{
ptRootPath[i] = 0;
}
}
}
BOOL CCeFindFile::IsDirectory()
{
if (m_pfiledata != NULL)
{
if(m_pfiledata -> dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
return TRUE;
else
return FALSE;
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -