[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++标准库判断
#include <fstream>
--> 使用ifstream打开文件流,成功则存在,失败则不存在;#include <stdio.h>
--> 以fopen读方式打开文件,成功则存在,否则不存在;#include <unistd.h>
--> 使用access函数获取文件状态,成功则存在,否则不存在#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++判断文件是否存在的主要内容,如果未能解决你的问题,请参考以下文章