📄 cefilefind.cpp
字号:
// CeFileFind.cpp : implementation file
//
#include "stdafx.h"
#include "CeFileFind.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define DELETE_POINTER(ptr) if( ptr != NULL ) \
{ \
delete ptr; \
ptr = NULL; \
}
#define DIR_SEPERATOR '\\'
/////////////////////////////////////////////////////////////////////////////
// CCeFileFind
CCeFileFind::CCeFileFind():m_hFileHandle(INVALID_HANDLE_VALUE)
{
memset(&m_pFileData,0,sizeof(WIN32_FIND_DATA));
memset(&m_pNextData,0,sizeof(WIN32_FIND_DATA));
}
CCeFileFind::~CCeFileFind()
{
Close();
}
// Operations
BOOL CCeFileFind::FindFile(LPCTSTR pstrName)
{
Close();
// if NULL , wild card search
if( NULL == pstrName )
{
m_csRoot = DIR_SEPERATOR;
pstrName = _T("\\*.*");
}
else
{
m_csRoot = pstrName;
int nPos = m_csRoot.ReverseFind( '\\' );
if( nPos == 0 )
m_csRoot = '\\';
else
m_csRoot = m_csRoot.Left( nPos );
}
// search for file
m_hFileHandle = FindFirstFile( pstrName, &m_pNextData );
if ( m_hFileHandle == INVALID_HANDLE_VALUE )
{
Close();
return FALSE;
}
// file was found
return TRUE;
}
BOOL CCeFileFind::FindNextFile()
{
ASSERT(m_hFileHandle != INVALID_HANDLE_VALUE);
if (m_hFileHandle == INVALID_HANDLE_VALUE)
return FALSE;
WIN32_FIND_DATA pTemp = m_pFileData;
m_pFileData = m_pNextData;
m_pNextData = pTemp;
return ::FindNextFile(m_hFileHandle, &m_pNextData);
}
void CCeFileFind::Close()
{
if( m_hFileHandle != INVALID_HANDLE_VALUE )
{
::FindClose( m_hFileHandle );
m_hFileHandle = INVALID_HANDLE_VALUE;
}
}
BOOL CCeFileFind::MatchesMask(DWORD dwMask) const
{
ASSERT(m_hFileHandle != NULL);
return (!!(m_pFileData.dwFileAttributes & (dwMask)) );
}
CString CCeFileFind::GetRoot() const
{
ASSERT(m_hFileHandle != NULL);
return m_csRoot;
}
BOOL CCeFileFind::GetLastAccessTime(FILETIME* pTimeStamp) const
{
ASSERT(m_hFileHandle != NULL);
ASSERT(pTimeStamp != NULL);
if (pTimeStamp != NULL)
{
*pTimeStamp = m_pFileData.ftLastAccessTime;
return TRUE;
}
else
return FALSE;
}
BOOL CCeFileFind::GetLastWriteTime(FILETIME* pTimeStamp) const
{
ASSERT(m_hFileHandle != NULL);
ASSERT(pTimeStamp != NULL);
if (pTimeStamp != NULL)
{
*pTimeStamp = m_pFileData.ftLastWriteTime;
return TRUE;
}
else
return FALSE;
}
BOOL CCeFileFind::GetCreationTime(FILETIME* pTimeStamp) const
{
ASSERT(m_hFileHandle != NULL);
if (pTimeStamp != NULL)
{
*pTimeStamp = m_pFileData.ftCreationTime;
return TRUE;
}
else
return FALSE;
}
/*
BOOL CCeFileFind::GetLastAccessTime(CTime& refTime) const
{
ASSERT(m_hFileHandle != NULL);
refTime = CTime( m_pFileData.ftLastAccessTime );
return TRUE;
}
BOOL CCeFileFind::GetLastWriteTime(CTime& refTime) const
{
ASSERT(m_hFileHandle != NULL);
refTime = CTime( m_pFileData.ftLastWriteTime );
return TRUE;
}
BOOL CCeFileFind::GetCreationTime(CTime& refTime) const
{
ASSERT(m_hFileHandle != NULL);
refTime = CTime( m_pFileData.ftCreationTime );
return TRUE;
}
*/
BOOL CCeFileFind::IsDots() const
{
ASSERT(m_hFileHandle != NULL);
// return TRUE if the file name is "." or ".." and
// the file is a directory
BOOL bResult = FALSE;
if (IsDirectory())
{
WIN32_FIND_DATA pFindData = m_pFileData;
if (pFindData.cFileName[0] == '.')
{
if (pFindData.cFileName[1] == '\0' ||
(pFindData.cFileName[1] == '.' &&
pFindData.cFileName[2] == '\0'))
{
bResult = TRUE;
}
}
}
return bResult;
}
BOOL CCeFileFind::IsArchived( ) const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE )
return TRUE;
else
return FALSE;
}
BOOL CCeFileFind::IsCompressed() const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_COMPRESSED )
return TRUE;
else
return FALSE;
}
BOOL CCeFileFind::IsDirectory() const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY )
return TRUE;
else
return FALSE;
}
BOOL CCeFileFind::IsHidden() const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_HIDDEN )
return TRUE;
else
return FALSE;
}
BOOL CCeFileFind::IsNormal() const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_NORMAL )
return TRUE;
else
return FALSE;
}
BOOL CCeFileFind::IsReadOnly() const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_READONLY )
return TRUE;
else
return FALSE;
}
BOOL CCeFileFind::IsSystem() const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_SYSTEM )
return TRUE;
else
return FALSE;
}
BOOL CCeFileFind::IsTemporary() const
{
ASSERT(m_hFileHandle != NULL);
if( m_pFileData.dwFileAttributes == FILE_ATTRIBUTE_TEMPORARY )
return TRUE;
else
return FALSE;
}
CString CCeFileFind::GetFilePath() const
{
ASSERT(m_hFileHandle != NULL);
CString csResult = m_csRoot;
if (csResult[csResult.GetLength()-1] != DIR_SEPERATOR )
csResult += DIR_SEPERATOR;
csResult += GetFileName();
return csResult;
}
CString CCeFileFind::GetFileName() const
{
ASSERT(m_hFileHandle != NULL);
return m_pFileData.cFileName;
}
DWORD CCeFileFind::GetLength() const
{
ASSERT(m_hFileHandle != NULL);
return m_pFileData.nFileSizeLow;
}
DWORD CCeFileFind::GetFirstFileAttribute()
{
ASSERT(m_hFileHandle != NULL);
return m_pNextData.dwFileAttributes;
}
DWORD CCeFileFind::GetFileAttributes()
{
ASSERT(m_hFileHandle != NULL);
return m_pFileData.dwFileAttributes;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -