上篇
上次回顾
上次我们讲到怎么样检查输入的命令/log:
之后的空
、文件夹
检查。
内容预览
本节概要
本节主要讲一下,检查/log:
文件后缀名
的检查和/log:
主上一级目录必须为目录的检查。
检查文件后缀名
我在这里写一个小小的函数,用来检测一个文件是否是我们想要文件后缀名。
/*************************************************************************/
/* */
/* [处理概要] */
/* 对比一个文件的后缀名是否为想要后缀名 */
/* [参数] */
/* LPCTSTR pszFullPath [I] 文件的完整路径 */
/* LPCTSTR pszExt [I] 要对比的后缀名 */
/* [返回值] */
/* TRUE */
/* FALSE */
/* [备注说明] */
/* */
/*************************************************************************/
__inline BOOL CheckFileExt(LPCTSTR pszFullPath,LPCTSTR pszExt)
{
CString csExt = PathFindExtension(pszFullPath);
return csExt.CompareNoCase(pszExt) == 0 ? TRUE : FALSE;
}
并在wordsum.h
添加对应的声明
__inline BOOL CheckFileExt(LPCTSTR pszFullPath,LPCTSTR pszExt);
检查/log的文件后缀名
使用上面的检查后缀名的函数CheckFileExt
if ( !CheckFileExt(csFullPath,FILE_EXT_LOG) )
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_006);
return WORDSUM_RESULT_ERROR;
}
并添加WORDSUM_MSG_ERR_006
资源,说明文件必须要以.log
结尾。
WORDSUM_MSG_ERR_006 "LOG文件必须指定为以.log为结尾的文件。"
在wordsum.h
头文件中添加一个.log
字符串
const CString FILE_EXT_LOG = _T(".log");
调试预览
检查/log的文件上级必须也要为文件夹
在写这个功能之前我同样的也写了一个小的函数,这个函数是用来更方便获得上一层文件路径。
/*************************************************************************/
/* */
/* [处理概要] */
/* 获得一个文件的上一层目录, 支持绝对路径和相对路径 */
/* [参数] */
/* LPCTSTR lszFilePath [I] 目录或文件路径 */
/* [返回值] */
/* 上一层路径 */
/* [备注说明] */
/* */
/*************************************************************************/
__inline CString GetParentPath(LPCTSTR lszFilePath)
{
char szTemp[MAX_PATH] = {0};
_tcscpy_s(szTemp,MAX_PATH,lszFilePath);
PathRemoveFileSpec(szTemp);
return szTemp;
}
同样在wordsum.h
添加对应的声明
__inline CString GetParentPath(LPCTSTR lszFilePath);
添加相应的检测代码
// 获得上一层的路径
CString csLogParentPath = GetParentPath(csFullPath);
// 判断上一层是否是一个已经存在的文件夹
if ( !PathIsDirectory(csLogParentPath) )
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_015,csLogParentPath);
return WORDSUM_RESULT_ERROR;
}
并添加WORDSUM_MSG_ERR_015
资源,LOG文件的上一层的目录必须存在。
WORDSUM_MSG_ERR_015 "LOG制定文件的文件夹不存在:%s。"