小编典典

检查 C 中是否存在文件的最佳方法是什么?

all

有没有比简单地尝试打开文件更好的方法?

int exists(const char *fname)
{
    FILE *file;
    if ((file = fopen(fname, "r")))
    {
        fclose(file);
        return 1;
    }
    return 0;
}

阅读 115

收藏
2022-03-11

共1个答案

小编典典

查找access()函数,在unistd.h. 您可以将您的功能替换为

if( access( fname, F_OK ) == 0 ) {
    // file exists
} else {
    // file doesn't exist
}

您还可以使用R_OK,W_OKX_OK代替F_OK来检查读取权限,写入权限和执行权限(分别)而不是存在,您可以将它们中的任何一个放在一起(即使用
来检查读取 写入权限R_OK|W_OK

更新 :请注意,在 Windows 上,您不能使用W_OK可靠地测试写入权限,因为访问功能不考虑 DACL。access( fname, W_OK )可能会返回 0(成功),因为该文件没有设置只读属性,但您仍然可能没有写入该文件的权限。

2022-03-11