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