C++ 判断一个文件是否存在

good函数

C++中判断一个文件是否存在的函数是std::ifstream::good()。该函数返回一个bool值,表示文件是否存在且可用。

具体使用方法如下:

#include <iostream>
#include <fstream>

int main() {
    std::ifstream file("example.txt");
    if (file.good()) {
        std::cout << "File exists!" << std::endl;
    } else {
        std::cout << "File does not exist." << std::endl;
    }
    return 0;
}

在上面的例子中,我们尝试打开名为“example.txt”的文件。如果文件存在且可用,file.good()将返回true,程序将输出“File exists!”;否则,返回false,程序将输出“File does not exist.”。

需要注意的是,std::ifstream::good()只能判断文件是否存在,但不能判断文件是否可读或可写。如果需要判断文件是否可读或可写,可以使用std::ifstream::is_open()函数。

access函数

access()函数也可以用来判断文件是否存在,其用法如下:

#include <iostream>
#include <unistd.h>

int main() {
    if (access("example.txt", F_OK) != -1) {
        std::cout << "File exists!" << std::endl;
    } else {
        std::cout << "File does not exist." << std::endl;
    }
    return 0;
}

在上面的例子中,我们使用access()函数来判断是否能够访问名为“example.txt”的文件。如果文件存在,access()函数返回0,程序将输出“File exists!”;否则,返回-1,程序将输出“File does not exist.”。

两者的区别在于,std::ifstream::good()函数是C++标准库函数,需要包含<fstream>头文件,而access()函数是POSIX标准函数,需要包含<unistd.h>头文件。此外,access()函数还可以判断文件是否可读、可写、可执行等,而std::ifstream::good()函数只能判断文件是否存在。

总的来说,如果只需要判断文件是否存在,使用std::ifstream::good()函数更为简单方便;如果需要判断文件的更多属性,可以使用access()函数。

access()函数的原型如下:

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

其中,path参数表示要访问的文件路径,mode参数表示要进行的操作。mode参数可以取以下几个值:

  • F_OK:判断文件是否存在;
  • R_OK:判断文件是否可读;
  • W_OK:判断文件是否可写;
  • X_OK:判断文件是否可执行。

access()函数返回值为0表示操作成功,返回-1表示操作失败,具体的错误信息可以通过errno变量获取。

例如,以下代码判断文件是否可读:

#include <iostream>
#include <unistd.h>

int main() {
    if (access("example.txt", R_OK) != -1) {
        std::cout << "File is readable!" << std::endl;
    } else {
        std::cout << "File is not readable." << std::endl;
    }
    return 0;
}

在上面的例子中,我们使用access()函数来判断是否能够读取名为“example.txt”的文件。如果文件可读,access()函数返回0,程序将输出“File is readable!”;否则,返回-1,程序将输出“File is not readable.”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LovG-Sco-Tec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值