判断目录是否存在

判断目录是否存在

使用CFileFind 类无法判断根目录:

CFileFind fileFind;
CString m_path = _T("c:\\");
if (fileFind.FindFile( m_path) == false)//**如果是根目录(c:\,d:\),FindFile返回false;不是根目录则运行正常
{
      AfxMessageBox(msg);
      return;
}

CFileFind 是对API ::FindFirstFile的封装,直接使用::FindFirstFile也存在无法判断根目录是否存在:

WIN32_FIND_DATA  wfd;

HANDLE hFind = FindFirstFile(_T("c:\\"), &wfd);
if (hFind != INVALID_HANDLE_VALUE)
{
    //
}
FindClose(hFind);


可以使用IO.h的 _access函数来判断
#include <io.h>//头文件

#ifdef _UNICODE
#define IsDirectoryExist(path) ::_waccess(path,0) == 0
//_waccess的第二个参数表示仅判断存在性,返回0表示存在,返回-1表示不存在
#else
#define IsDirectoryExist(path) ::_access(path,0) == 0//_access是MBCS版本
#endif

使用代码:
if(IsDirectoryExist(_T("c:\\")))
{
    //存在
}

也可以使用GetFileAttributes函数,返回 FILE_ATTRIBUTE_DIRECTORY 表示目录存在
if (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(_T("c:\\")))
{
    //存在
}

PathFileExists函数也可以,这个好,不用写注释
#include <shlwapi.h>//头文件
if (PathFileExists(_T("c:\\")))
{
    //存在
}



转载于:https://www.cnblogs.com/yoyolion/archive/2007/05/23/756648.html

### 回答1: 在shell中判断目录是否存在可以使用test命令或者[]符号来进行判断,具体如下: 使用test命令: ``` if test -d "/path/to/directory"; then echo "directory exists" else echo "directory does not exist" fi ``` 使用[]符号: ``` if [ -d "/path/to/directory" ]; then echo "directory exists" else echo "directory does not exist" fi ``` 其中,-d选项表示判断是否存在目录,如果存在则返回true,否则返回false。 ### 回答2: 在shell脚本中,我们可以使用`test`命令或者`[ ]`来判断一个目录是否存在。 使用`test`命令: ```shell if test -d 目录路径; then echo "目录存在" else echo "目录不存在" fi ``` 使用`[ ]`: ```shell if [ -d 目录路径 ]; then echo "目录存在" else echo "目录不存在" fi ``` 其中,`-d`表示是一个目录。如果目录存在,则返回真(0),否则返回假(非0)。 在脚本中,我们可以根据返回值来判断目录是否存在,然后进行相应的操作。以上示例中,如果目录存在,会输出"目录存在",否则输出"目录不存在"。 ### 回答3: 在Shell脚本中,可以使用`-d`选项来判断一个目录是否存在。 以下是一个示例代码: ```shell #!/bin/bash # 定义目录路径 dir="/path/to/directory" # 使用条件判断语句,判断目录是否存在 if [ -d "$dir" ]; then echo "目录存在" else echo "目录不存在" fi ``` 在上述代码中,我们通过`-d`选项来判断变量`$dir`所表示的目录是否存在。如果目录存在,则打印出"目录存在";如果目录不存在,则打印出"目录不存在"。 需要注意的是,`-d`选项只能判断目录是否存在。如果需要判断文件是否存在,可以使用`-f`选项。此外,`-e`选项可以同时判断文件或目录是否存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值