C语言检查文件是否存在

在编程中,有时我们需要验证特定目录或文件是否存在,无论是使用它还是只是检查其完整性、组成或权限。在这种情况下 Linux 在方法文章中,您将学习如何使用 access() 函数来检查文件是否存在。 我们将向您展示语法并解释其工作原理、调用方法和所使用的参数类型。

接下来我们将通过实际例子结合代码和图片来了解一下这个功能,帮助您更好地理解并快速使用这个功能。

Access()函数检查文件是否存在

access() 函数查询文件或目录是否存在以及关联的读、写和执行权限。 下面我们看一下这个函数的原型:

整数 使用权常量 字符 *路径名, 整数 模式;

该函数查询由路径名参数中的绝对或相对路径指定的文件或目录是否存在及其属性。 该路径必须由字符串或指向它的指针指定,其中包含要查询的路径、文件名和扩展名。

查询的类型在输入参数“mode”中通过标志或其中几个之间的 OR 运算的结果指定。 下表列出了 access() 函数中可用的查询:

旗帜描述
F_OK检查文件是否存在
R_OK检查文件是否有读取权限
W_OK检查文件是否有写权限
X_OK检查文件是否有可执行权限

查询 F_OK 时,如果文件存在,则 access() 函数返回等于 0 的结果;如果不存在,则返回 -1。 同样,如果文件具有请求的写入、读取或访问权限,则返回 0。 否则返回-1。

该函数在“unistd.h”头文件中声明。 因此,要使用 access() 函数,我们需要将其包含在我们的代码中,如下所示:

#包括

如何检查文件是否存在

在这个例子中,我们将看到如何验证“example“Documents”目录中的“.txt”文件。 为此,我们使用以下命令创建此文件 Linux 文件管理器。

在我们将为此使用的代码中 example,我们将包含头文件“stdio.h”和“unistd.h”并打开一个 void 类型的 main() 函数。 在其中我们声明了整数“i”和char类型的路径指针,我们将带有文件相对路径的字符串分配给它。

声明变量后,我们调用 access() 函数并将路径字符串作为第一个输入参数传递,并将 F_OK 标志作为第二个参数传递。

输出参数是整数“i”,然后我们将其与 if-else 条件中的返回值一起使用,以打印一条消息,指示指定的文件是否存在。 让我们看一下这个代码 example:

#包括

#包括

空的 主要是 {
字符 *离开 =“/home/linuxways/文档/example。TXT”;
整数;

= 使用权离开, F_OK;
如果 == 0

打印函数 “文件 %s 存在 , 离开;
不同的
打印函数 “文件 %s 不存在, 离开;
}

在下图中我们看到了这段代码的编译和执行。 从图中可以看出,access()函数返回0,这意味着“example”文件“.txt”位于“Documents”目录下。

现在我们在“path”字符串中指定一个不存在的文件的名称,编译它并运行代码。

如图所示,如果字符串路径中指定了不存在的文件,则 access() 函数返回的结果等于 -1。

如何检查文件的权限

在这个 example,让我们看看如何使用 access() 函数检查文件的权限。 为此,我们使用上一个中的代码 example 并将模式输入参数中的 F_OK 标志替换为 W_OK 标志。 我们还更改此代码显示的消息以匹配查询。 为此,我们看一下下面的代码 example:

#包括

#包括

空的 主要是 {
字符 *离开 =“/home/linuxways/文档/example。TXT”;
整数;

= 使用权离开, W_OK;
如果 == 0

打印函数 “文件 %s 有写权限, 离开;
不同的
打印函数 “文件 %s 没有写权限 , 离开;
}

下图显示了此代码的执行情况。 我们可以看到,access()函数发现“example”文件“.txt”具有写权限。

现在让我们去 Linux 管理器并输入文件的属性。 在属性中,我们进入“权限”菜单并在那里设置读取权限。 之后我们再次编译。

正如我们在图中看到的,在这次执行中,access()函数检测到该文件没有写权限。

如何检查目录是否存在

正如access()函数查询文件是否存在一样,它也可以查询目录是否存在。

此代码与上一个代码相同 example,只不过我们不是指定文件的路径及其名称和扩展名,而是指定目录路径。 我们来看一下检查Documents目录是否存在的代码:

#包括

#包括

空的 主要是 {
字符 *离开 =“/home/linuxways/文档”;
整数;

= 使用权离开, F_OK;
如果 == 0

打印函数 “目录 %s 存在, 离开;
不同的
打印函数 “目录%s不存在, 离开;
}

下图显示了查询 Documents 目录是否存在的代码的执行情况:

文凭

在这个 Linux 在本文中,我们向您展示了如何使用 access() 函数检查文件和目录是否存在。 我们研究了这个函数的语法、它的调用方法、检查文件和目录是否存在以及它们的读、写和执行权限的方法。 然后,我们在实际示例中应用了此功能,通过执行各种类型的查询,我们可以看到此简单功能的实际效果。