C语言 linux文件操作(二)

发布时间:2023年12月28日

一、获取文件长度

通过lseek函数,除了操作定位文件指针,还可以获取到文件大小,注意这里是文件大小,单位是字节。例如在file1文件中事先写入"你好世界!",那么在gbk编码的情况下,一个中文字符占3个字节,获取到的文件大小就是3*5=15字节。
在这里插入图片描述

上述代码如下:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	int fd;
	char *buf = "chenLichen hen shuai!";	

	fd = open("./file1",O_RDWR);

	int filesize = lseek(fd, 0, SEEK_END);
	printf("file's size is:%d\n",filesize);
	close(fd);

	return 0;
}


二、追加写入

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int fd; // 声明文件描述符变量
    char *buf = "chenLichen hen shuai!"; // 声明一个字符串指针,并赋值一个字符串常量

    // 以读写和追加方式打开(如果文件不存在则创建)名为 "file1" 的文件
    fd = open("./file1", O_RDWR | O_APPEND);

    // 打印文件打开是否成功的信息和文件描述符
    printf("open success : fd = %d\n", fd);

    // 将字符串 buf 中的内容写入到打开的文件中
    int n_write = write(fd, buf, strlen(buf));
    if (n_write != -1) {
        printf("write %d byte to file\n", n_write); // 打印成功写入文件的字节数
    }

    close(fd); // 关闭文件描述符对应的文件

    return 0;
}

这段代码的主要操作包括:

  1. 文件打开:

    • 使用 open 函数以读写和追加的方式打开名为 “file1” 的文件,如果文件不存在则创建。
    • O_RDWR 标志表示以读写方式打开文件,O_APPEND 标志表示在文件末尾追加数据。
  2. 写入文件:

    • 将字符串 “chenLichen hen shuai!” 的内容写入到打开的文件中。
    • 使用 write 函数将数据写入文件,并获取成功写入的字节数。
  3. 文件关闭:

    • 使用 close 函数关闭文件描述符,释放相关资源。

这段代码的目的是打开一个文件,将指定的字符串内容追加到文件末尾,并输出写入文件的字节数。

三、覆盖写入

以下是代码的注释和解释:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int fd; // 声明文件描述符变量
    char *buf = "test"; // 声明一个字符串指针,并赋值一个字符串常量

    // 以读写和截断方式打开(如果文件不存在则创建)名为 "file1" 的文件
    fd = open("./file1", O_RDWR | O_TRUNC);

    // 打印文件打开是否成功的信息和文件描述符
    printf("open success : fd = %d\n", fd);

    // 将字符串 buf 中的内容写入到打开的文件中
    int n_write = write(fd, buf, strlen(buf));
    if (n_write != -1) {
        printf("write %d byte to file\n", n_write); // 打印成功写入文件的字节数
    }

    close(fd); // 关闭文件描述符对应的文件

    return 0;
}

这段代码的主要操作包括:

  1. 文件打开:

    • 使用 open 函数以读写和截断的方式打开名为 “file1” 的文件,如果文件不存在则创建。
    • O_RDWR 标志表示以读写方式打开文件,O_TRUNC 标志表示清空文件内容(截断文件)。
  2. 写入文件:

    • 将字符串 “test” 的内容写入到打开的文件中。
    • 使用 write 函数将数据写入文件,并获取成功写入的字节数。
  3. 文件关闭:

    • 使用 close 函数关闭文件描述符,释放相关资源。

这段代码的目的是打开一个文件,在以读写方式打开文件的同时将文件内容清空,然后将字符串 “test” 写入文件,并输出写入文件的字节数。

四、文件创建函数creat

以下是代码的注释和解释:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int fd; // 声明文件描述符变量
    char *buf = "test"; // 声明一个字符串指针,并赋值一个字符串常量

    // 使用 creat 函数创建一个文件 "/home/CLC/file1",并设置文件权限为用户可读、写和执行
    fd = creat("/home/CLC/file1", S_IRWXU);

    return 0;
}

这段代码的主要操作包括:

  1. 文件创建:

    • 使用 creat 函数创建一个文件 “/home/CLC/file1”。
    • creat 函数是一个对 open 函数的封装,用于创建文件,如果文件已存在,则将其截断为空文件。
    • S_IRWXU 是文件权限参数,表示用户(拥有者)具有读、写和执行权限。
  2. 文件描述符:

    • creat 函数成功创建文件后,会返回一个文件描述符 fd
    • 在这段代码中并未进行其他文件操作,所以文件描述符没有被使用到其他操作中。

这段代码的目的是使用 creat 函数创建一个名为 “/home/CLC/file1” 的文件,并将文件权限设置为用户可读、写和执行。

文章来源:https://blog.csdn.net/qq_17802895/article/details/135264550
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。