首页 > 后端开发 > C++ > 正文

c++中如何判断文件是否存在_C++检查文件或目录存在的方法

下次还敢
发布: 2025-10-12 19:24:02
原创
713人浏览过
优先使用std::filesystem::exists(C++17),其次根据平台选择_access_s或stat函数,也可通过文件流简单判断。

c++中如何判断文件是否存在_c++检查文件或目录存在的方法

在C++中判断文件或目录是否存在,有多种方法,具体取决于使用的标准和平台。以下是几种常用且有效的方式。

使用 std::filesystem(C++17 及以上)

现代C++推荐使用 std::filesystem 库,它提供了简洁直观的接口来检查文件或目录是否存在。

示例代码:

立即学习C++免费学习笔记(深入)”;

存了个图
存了个图

视频图片解析/字幕/剪辑,视频高清保存/图片源图提取

存了个图17
查看详情 存了个图
#include <filesystem>
#include <iostream>
<p>int main() {
std::string path = "example.txt";</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">if (std::filesystem::exists(path)) {
    std::cout << "文件或目录存在\n";

    if (std::filesystem::is_regular_file(path)) {
        std::cout << "这是一个文件\n";
    } else if (std::filesystem::is_directory(path)) {
        std::cout << "这是一个目录\n";
    }
} else {
    std::cout << "不存在\n";
}

return 0;
登录后复制

}

编译时需要启用 C++17 支持,例如使用 g++:

g++ -std=c++17 your_file.cpp -o your_file
登录后复制

使用 _access_s 或 _waccess_s(Windows 平台)

在 Windows 上,可以使用 Microsoft 提供的运行时函数 _access_s 来检查文件是否存在及访问权限。

示例代码:

立即学习C++免费学习笔记(深入)”;

#include <io.h>
#include <stdio.h>
<p>int main() {
const char* path = "example.txt";</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">if (_access_s(path, 0) == 0) {
    printf("文件存在\n");
} else {
    printf("文件不存在\n");
}

return 0;
登录后复制

}

参数说明:传入 0 表示仅检查是否存在,4 表示只读权限,2 表示写权限,6 表示读写权限。

使用 stat 函数(跨平台,POSIX 兼容)

在类 Unix 系统(包括 Linux 和 macOS)上,可以使用 stat 函数检查文件状态。该方法也可在 Windows 上通过 <sys/stat.h> 使用。

示例代码:

立即学习C++免费学习笔记(深入)”;

#include <sys/stat.h>
#include <iostream>
<p>bool fileExists(const std::string& path) {
struct stat buffer;
return (stat(path.c_str(), &buffer) == 0);
}</p><p>bool isDirectory(const std::string& path) {
struct stat buffer;
if (stat(path.c_str(), &buffer) != 0) return false;
return S_ISDIR(buffer.st_mode);
}
登录后复制

优点是兼容性较好,适合不支持 C++17 的项目。

尝试打开文件流(简单但有限)

对于普通文件,可以通过 std::ifstream 尝试打开来判断是否存在。

示例代码:

立即学习C++免费学习笔记(深入)”;

#include <fstream>
#include <iostream>
<p>bool fileExists(const std::string& path) {
std::ifstream file(path);
bool exists = file.good();
file.close();
return exists;
}
登录后复制

注意:这种方法只能判断是否能打开文件,不能区分文件和目录,也不适用于无读权限但存在的文件。

基本上就这些常见方式。如果使用现代C++,优先选择 std::filesystem::exists,简洁安全;老旧项目可考虑 stat 或 _access_s。跨平台项目建议封装一层判断逻辑,统一接口。不复杂但容易忽略细节,比如权限、符号链接等特殊情况。

以上就是c++++中如何判断文件是否存在_C++检查文件或目录存在的方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号