文件编程概述:
应用中比如:账单,游戏进度,配置文件等。
用代码操作文件:实现文件创建,打开,编辑等自动化执行。
那么在Linux中如何编写一个文件呢?
步骤:打开(open)/创建(creat)->读写(read/write)->关闭(close)。
1.打开/创建文件:open()函数
#include <sys/types.h>
#include <sys/stat.h>
#include <fcutl.h>
int open(const char *pathname,int flags);
const char *pathname 要打开文件名(包含路径)
int flags 标志,指打开文件的方式
flags:
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 可读可写)
以上这三个常数中应当只指定一个。下列常数是可选择的:
O_CREAT 若文件不存在则创建它。使用此选项时,需要同时说明第三个参数mode,
用其说明该新文件的存取许可权限。
O_EXCL 如果同时指定了OCREAT,而文件已经存在,则出错,返回-1。
O_APPEND 每次写时都加到文件的尾端。
O_TRUNC 属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,
则将其长度截短为0。
int open(const char *patname,int flags,mode_t mode);
前两个参数和上面一样
mode_t mode :一定是在flags中使用了O_CREAT标志,mode记录待创建的文件的访问权限
例:open("./file1",O_RDWR|O_CREAT,0600);//以可读可写的方式打开文件,如果没有就创
//建一个可读可写的文件。权限0600,6=4+2;2可写 4可读。
open函数返回的是一个文件描述符,是一个非负整数。
什么是文件描述符:对于内核而言,所有打开文件都由文件描述符引用。当打开一个现存文件或者创建一个新文件时,内核向进程返回一个文件描述符。
open函数打开文件,打开成功返回一个文件描述符,打开失败则返回-1。
下面用代码举例
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
int main ()
{
int fd;//定义一个文件标识符
fd=open("./file1",O_RDWR);//以可读可写的方式打开
printf("%d\n",fd);//输出文件标识符的值
return 0;
}
在文件三种打开模式之外,还有几种模式
O_CREAT:若文件不存在则创建它
O_EXCL:如果同时制定了O_CREAT,而文件存在,则返回-1。
O_APPEND:每次写时都加到文件的尾端。
O_TRUNC:去打开问件事,如果原文件有内容,则把原文覆盖。
举例:
O_CREAT:若文件不存在则创建它