C++之判断文件是否存在的几种方法

这篇具有很好参考价值的文章主要介绍了C++之判断文件是否存在的几种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

  • 1. 方法一:C语言之access
  • 2. 方法二:C++方法之ifstream
  • 3. 方法三:fopen方法
  • 4. 方法四:sys中的stat函数方法

1. 方法一:C语言之access

可以使用C语言中unistd.h里的函数access()来判断文件是否存在,其原型如下:

int access(const char *filename, int mode);

filename是文件名,mode有下列几种方法:

mode Description
F_OK 测试文件是否存在
R_OK 测试文件是否有读权限
W_OK 测试文件是否有写权限
X_OK 测试文件是否有执行权限

返回0,表示存在,返回-1表示不存在。

  • 使用方法
#include <unistd.h>
#include <stdio.h>
 
int main(void)
{
    if (access("2.txt", F_OK) == 0)
    {
        printf("1.txt exists.\n");
    }
    else
    {
        printf("1.txt not exists.\n");
    }
    return 0;
}

2. 方法二:C++方法之ifstream

ifstream中的good方法可以判断一个文件是否存在。

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

bool isFileExists_ifstream(string& name) {
    ifstream f(name.c_str());
    return f.good();
}
int main()
{
    string filename = "1.txt";

    bool ret = isFileExists_ifstream(filename);
    if (ret)
    {
        cout << "文件存在" << endl;
    }
    else
    {
        cout << "文件不存在" << endl;
    }
}

3. 方法三:fopen方法

可以使用fopen的方式尝试打开一个文件。

#include <iostream>
#include <stdio.h>
using namespace std;

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

int main()
{
    string filename = "1.txt";

    bool ret = isFileExists_fopen(filename);
    if (ret)
    {
        cout << "文件存在" << endl;
    }
    else
    {
        cout << "文件不存在" << endl;
    }
}

4. 方法四:sys中的stat函数方法

sys中的stat函数可以查阅文件的状态。文章来源地址https://www.toymoban.com/news/detail-637966.html

#include <iostream>
#include <sys/stat.h>
using namespace std;

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

int main()
{
    string filename = "1.txt";

    bool ret = isFileExists_stat(filename);
    if (ret)
    {
        cout << "文件存在" << endl;
    }
    else
    {
        cout << "文件不存在" << endl;
    }
}

到了这里,关于C++之判断文件是否存在的几种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言判断一个数是否是质数的几种常用方法(求100-1000以内的所有质数)

    要用代码判断一个数是否是质数,首先我们需要知道什么什么数称之为质数。质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。 以下有三种方法判定质数: 通过从2到n-1每个数均整除

    2024年02月08日
    浏览(94)
  • Python中可以用三种方法判断文件是否存在

    前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。 所以最好在做任何操作之前,先判断文件是否存在。 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句

    2024年02月02日
    浏览(49)
  • JavaScript 判断是否为数字的几种方式

    喜欢博主的文章,欢迎关注、点赞👍、收藏⭐️、留言📝支持,谢谢大家 js判断是否为数字的方式很多: typeof 、 instanceof 、 Number.isNumber parseInt 、 parseFloat isNaN 、 isFinite Number.isNaN 、 Number.isFinite 正则表达式 终极方案 我们逐一介绍,希望能帮到大家。 typeof 判断值是不是基

    2023年04月10日
    浏览(65)
  • js判断是否为数字的几种方式

    typeof typeof 判断值是不是基本类型 number : instanceof instanceof 判断值是不是包装类 Number : Number.isInteger Number.isInteger 判断值是否是 整数 : 这几种方式的缺点,都是只能基于类型判断,无法判断字符串是否是数值。 parseInt 和 parseFloat 解析的时候遇到非法字符结束,返回解析到

    2024年02月16日
    浏览(44)
  • c++初始化vector的几种方法

    在C++中,vector是一种动态数组,可以在运行时自由添加、删除元素。初始化vector是创建一个vector对象并为其分配内存空间的过程。以下是C++中初始化vector的几种方法: 默认构造函数 使用默认构造函数创建一个空的vector,如下所示: std::vectorint vec; // 创建空vector 这种方式可用

    2024年02月16日
    浏览(43)
  • C++中创建二维数组的几种方法

    或者

    2024年02月15日
    浏览(45)
  • 【Linux | Shell 】- 判断文件是否存在、去掉文件后缀

    在Linux编程过程中, 设计到对文件的处理时常常需要判断某个文件是否存在,或者需要获取文件的前缀或文件后缀,这篇文章主要介绍在Linux的Shell编程或者在命令行与Shell交互时,如何判断文件是否存在、如何获取文件后缀,获取文件前缀。 将下面代码保存为 dirExist.sh ,运

    2024年02月08日
    浏览(74)
  • Java如何判断某文件目录是否存在

    在java中如何判断某文件所在的目录是否存在,若不存在创建目录 可以通过国使用 File 类的 getParentFile() 方法来获取文件所在的目录,并通过 exists() 方法来判断该目录是否存在,若不存在,通过 mkdirs() 方法创建目录,以下为实例 或直接简写

    2024年02月12日
    浏览(85)
  • windows11--判断文件夹是否存在

    不想全盘检索,只是想判断当前文件夹下,是否存在名为xxx的子文件夹 打开你要进行搜索的文件夹 点击上面的地址栏,输入cmd,按下回车键,进入cmd 界面 输入 dir /b | find \\\"xxx文件名\\\" (补充:输入 dir /b\\\" 可列出所有子文件的名字) 如果xxx文件存在,则返回xxx 如果xxx文件不存

    2024年01月21日
    浏览(78)
  • UE4中C++动态创建材质的几种方法Material

    第一种方式:         1、首先加载材质,代码如下: UMaterialInterface* Material = LoadObjectUMaterialInterface(nullptr, TEXT(\\\"Material\\\'/Game/Materials/ColorMaterial.ColorMaterial\\\'\\\"));         2、然后调用CreateDynamicMaterialInstance创建静态材质实例,如下: UMaterialInstance * DynamicMaterial = UKismetMaterialLibr

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包