文章目录
- 一、获取文件长度
- 二、追加写入
- 三、覆盖写入
- 四、文件创建函数creat
一、获取文件长度
通过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;
}
这段代码的主要操作包括:
-
文件打开:
- 使用
open
函数以读写和追加的方式打开名为 “file1” 的文件,如果文件不存在则创建。 O_RDWR
标志表示以读写方式打开文件,O_APPEND
标志表示在文件末尾追加数据。
- 使用
-
写入文件:
- 将字符串 “chenLichen hen shuai!” 的内容写入到打开的文件中。
- 使用
write
函数将数据写入文件,并获取成功写入的字节数。
-
文件关闭:
- 使用
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;
}
这段代码的主要操作包括:
-
文件打开:
- 使用
open
函数以读写和截断的方式打开名为 “file1” 的文件,如果文件不存在则创建。 O_RDWR
标志表示以读写方式打开文件,O_TRUNC
标志表示清空文件内容(截断文件)。
- 使用
-
写入文件:
- 将字符串 “test” 的内容写入到打开的文件中。
- 使用
write
函数将数据写入文件,并获取成功写入的字节数。
-
文件关闭:
- 使用
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;
}
这段代码的主要操作包括:
-
文件创建:
- 使用
creat
函数创建一个文件 “/home/CLC/file1”。 creat
函数是一个对open
函数的封装,用于创建文件,如果文件已存在,则将其截断为空文件。S_IRWXU
是文件权限参数,表示用户(拥有者)具有读、写和执行权限。
- 使用
-
文件描述符:
creat
函数成功创建文件后,会返回一个文件描述符fd
。- 在这段代码中并未进行其他文件操作,所以文件描述符没有被使用到其他操作中。
这段代码的目的是使用 creat
函数创建一个名为 “/home/CLC/file1” 的文件,并将文件权限设置为用户可读、写和执行。