【第八课】CheckComandLine之/Log 命令检查【二】

上篇

上篇地址:【第七课】CheckComandLine之/Log 命令检查【一】

上次回顾

上次我们讲到怎么样检查输入的命令/log:之后的文件夹检查。

内容预览

《【第八课】CheckComandLine之/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");

调试预览

《【第八课】CheckComandLine之/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。"

调试预览

《【第八课】CheckComandLine之/Log 命令检查【二】》

工程下载

下载地址:《【第八课】CheckComandLine之/Log 命令检查【二】》

点赞