C++ 判断某一路径是目录还是文件

有时候需要根据路径是目录还是文件执行不同的操作,那么在C/C++中如何判断某个路径是目录还是文件呢?
可以利用stat函数和结构体


stat的函数声明如下
 

int _stat( 
   const char *path, 
   struct _stat *buffer  
); 


参数:
path——文件或者文件夹的路径
buffer——获取的信息保存在内存中


返回值:

正确——返回0
错误——返回-1,具体错误码保存在errno中


_stat结构体是文件(夹)信息的结构体,定义如下:

 

struct stat { 
        _dev_t     st_dev;        //文件所在磁盘驱动器号 
        _ino_t     st_ino;        //inode,FAT、NTFS文件系统无意义 
        unsigned short st_mode;   //文件、文件夹的标志 
        short      st_nlink;      //非NTFS系统上通常为1 
        short      st_uid;        //UNIX系统上为userid,windows上为0 
        short      st_gid;        //UNIX系统上为groupid,windows上为0 
        _dev_t     st_rdev;       //驱动器号,与st_dev相同 
        _off_t     st_size;       //文件字节数 
        time_t st_atime;          //上次访问时间 
        time_t st_mtime;          //上次修改时间 
        time_t st_ctime;          //创建时间 
        }; 



从上面的解释可以得到如下的例子

#include <sys/stat.h>

struct stat s;
char* path = "myfile.txt";

if (stat(path,&s)==0){
  if(s.st_mode & S_IFDIR){
    std::cout<<"it's a directory"<<std::endl;
  }else if (s.st_mode & S_IFREG){
    std::cout<<"it's a file"<<std::endl;
  }else{
    std::cout<<"not file not directory"<<std::endl;
  }
}else{
  std::cout<<"error, doesn't exist"<<std::endl;
}


 

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值