[C++][转载]C++判断文件是否存在

Posted FL1623863129

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++][转载]C++判断文件是否存在相关的知识,希望对你有一定的参考价值。

1. 使用boost判断文件是否存在

std::string file_path = "file_name";
if (!boost::filesystem::exists(file_path))
  
    std::cout << "not exist file" << std::endl;
  

使用boost时需要包含:

#include <boost/array.hpp>
#include <boost/asio.hpp>
#include <boost/filesystem.hpp>
#include <boost/typeof/typeof.hpp>

2. 使用C++标准库判断

  1. #include <fstream> --> 使用ifstream打开文件流,成功则存在,失败则不存在;
  2. #include <stdio.h> --> 以fopen读方式打开文件,成功则存在,否则不存在;
  3. #include <unistd.h> --> 使用access函数获取文件状态,成功则存在,否则不存在
  4. #include <sys/stat.h> --> 使用stat函数获取文件状态,成功则存在,否则不存在
#include <sys/stat.h>
#include <unistd.h>
#include <fstream>
#include <string>
#include <iostream>

using namespace std;
bool isFileExists_ifstream(string& name) 
    ifstream f(name.c_str());
    return f.good();

bool isFileExists_fopen(string& name) 
    if (FILE *file = fopen(name.c_str(), "r")) 
        fclose(file);
        return true;
     else 
        return false;
       

bool isFileExists_access(string& name) 
    return (access(name.c_str(), F_OK ) != -1 );

bool isFileExists_stat(string& name) 
  struct stat buffer;   
  return (stat(name.c_str(), &buffer) == 0); 

 其中acces函数参数意义如下:

/* Values for the second argument to access.
   These may be OR'd together.  */
#define	R_OK	4		/* Test for read permission.  */
#define	W_OK	2		/* Test for write permission.  */
#define	X_OK	1		/* Test for execute permission.  */
#define	F_OK	0		/* Test for existence.  */

/* Test for access to NAME using the real UID and real GID.  */
extern int access (const char *__name, int __type) __THROW __nonnull ((1));

传入的两个变量分别是文件夹的路径,以及需要查询的权限,6代表读写权限,0代表存在与否。

std::string folderpath = "/<the_folder_path>";
if(access(folderpath.c_str(), 0))
     std::cout<<"folder does not exist! Will create a new one!" <<std::endl;
       

转载自:C++判断文件是否存在的方法汇总 - 万丈高楼平地起 - 博客园

以上是关于[C++][转载]C++判断文件是否存在的主要内容,如果未能解决你的问题,请参考以下文章

c++判断txt文件是否存在,如存在将其删除

[c++] c++17 在编译期判断是否存在某个函数

[c++] c++17 在编译期判断是否存在某个函数

[c++] c++17 在编译期判断是否存在某个函数

[c++] c++17 在编译期判断是否存在某个函数

[c++] c++17 在编译期判断是否存在某个函数