BOOL CFileExist::_FileIsExist(CString m_strFullPath)
{
HANDLE hFile = CreateFile(m_strFullPath, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
//创建或者打开下列对象,返回一个能够访问对象的的句柄(文件名的指针string,访问模式(读/写),文件共享访问
// 如何创建,文件属性,用于复制文件句柄)
BOOL bRet = (INVALID_HANDLE_VALUE != hFile);
//INVALID_HANDLE_VALUE,无效句柄值
CloseHandle(hFile);
return bRet;
}
BOOL CFileExist::_GetModulePath(CString &strPath)
{
TCHAR szPath[2048];
strPath.Empty();
if (0 != GetModuleFileName(NULL, szPath, 2048))
{
strPath = szPath;
int i = strPath.ReverseFind(TCHAR('\\'));
strPath = strPath.Left(i);
return TRUE;
}
return FALSE;
}
BOOL CFileExist::_CreateFile(CString m_strFullPath)
{
CStdioFile m_file;
CFileException ex;
if (m_file.Open(m_strFullPath, CFile::shareDenyNone | CFile::modeReadWrite | CFile::modeCreate, &ex))
{
m_file.Close();
return TRUE;
}
//
int i = m_strFullPath.ReverseFind(TCHAR('\\'));
CString strTemp = m_strFullPath.Left(i);
if ( _MakeDirectory(strTemp) )
{
if (m_file.Open(m_strFullPath, CFile::shareDenyNone | CFile::modeReadWrite | CFile::modeCreate, &ex))
{
m_file.Close();
return TRUE;
}
}
return FALSE;
}
BOOL CFileExist::hlMakeDirectory(const CString &strPath)
{
HANDLE hFile = INVALID_HANDLE_VALUE;
WIN32_FIND_DATA fileInfo = { 0 };
memset(&fileInfo, 0, sizeof(WIN32_FIND_DATA));
//
hFile = FindFirstFile(strPath, &fileInfo);
FindClose(hFile);
if (FILE_ATTRIBUTE_DIRECTORY == fileInfo.dwFileAttributes)
{//该文件目录存在!
return TRUE;
}
//
CStringArray strPathArr;
strPathArr.RemoveAll();
CString strPathTemp = _T("");
{
for (int nTemp = 0; nTemp < strPath.GetLength(); nTemp++)
{//分解路径
if (_T('\\') != strPath.GetAt(nTemp))
{
strPathTemp += strPath.GetAt(nTemp);
}
else
{
strPathArr.Add(strPathTemp);
strPathTemp += _T("\\");
}
//最后一个路径是没有_T('\\'),所以在结束之前加进来
if ((strPath.GetLength() - 1) == nTemp)
{
strPathArr.Add(strPathTemp);
}
}
}
//
{
for (int nTemp = 1; nTemp < strPathArr.GetSize(); nTemp++)
{
strPathTemp = strPathArr.GetAt(nTemp);
if (CreateDirectory(strPathTemp, NULL))
{
SetFileAttributes(strPathTemp, FILE_ATTRIBUTE_NORMAL);
}
}
}
strPathArr.RemoveAll();
//
hFile = FindFirstFile(strPath, &fileInfo);
FindClose(hFile);
if (FILE_ATTRIBUTE_DIRECTORY == fileInfo.dwFileAttributes) { return TRUE; }
if ( -1 == strPath.ReverseFind(TCHAR('\\')) && (-1 != strPath.ReverseFind(TCHAR(':'))) )
{
return TRUE;
}
//
return FALSE;
}
BOOL CFileExist::_MakeDirectory(CString strPath)
{
if ( !hlMakeDirectory(strPath) )
{
CString strErrMsg;
strErrMsg.Format(_T("Mark File %s Fail!"), strPath);
//hlError(HL_StsOutput, "hlModuleIni::_MakeDirectory", strErrMsg, __FILE__, __LINE__);
return FALSE;
}
return TRUE;
}