Linux系统编程—文件编程(open、write、read、lseek的用法)

Linux文件编程open、write、read以及光标lseek的用法

常用对文件编程的操作如open、read、write
1. open用法
2. write用法
3.read用法
4.补充说明读数据光标(lseek)位置处理
5.其他函数的补充

1.open的用法

参数说明:

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

pathname:要打开的文件名(含路径,缺省为当前路径)

Flags:O_RDONLY只读打开 O_WRONLY只写打开 O_RDWR可读可写打开

当我们附带了权限后,打开的文件就只能按照这种权限来操作。
以上这三个常数应当只指定一个。下列常数是可选择的。
O_CREAT 若文件不存在则创建它,
O_EXCL如果同时指定了O_CRETA,而文件已存在,则出错。
O_APPEND每次写时都加到文件的尾端。
O_TRUNC属性去打开文件时,如果这个文件中本来有内容的,而且为只读或只写成功打开。则将长度截断为0;

Mode:一定是在flags中使用了O_CREAT标志,mode记录待创建的文件的访问权限

头文件:

#include 
#include 
#include 

代码样列:

int main()
{
    int fd;
     fd= open("./fles1",O_RDWR);  //fd代表文件描述符
    // 当文件不存在的时候用 O_CREAT来重新创建
     fd=open("./fles1",O_RDWR|O_CREAT,0600);//0600代表文件的权限
     //当文件存在时,使用O_EXCL会报错
     fd=open("./fles1",O_RDWR|O_EXCL);
     //如果原来的文件中已存在数据,使用O_APPEND的时候,会原来数据基础上换行,加入新的数据。
     fd=open("./fles1",O_RDWR|O_APPEND);
     //如果这个文件中本来有内容的,则使用O_TRUNC之后,文件的内容将会全部清除
     fd=open("./fles1",O_RDWR|O_TRUNC);
     printf("fd=%d\n",fd);

 return 0;    
}       

2.write的用法

头文件

#include 

原型函数:

  ssize_t write(int fd, const void *buf, size_t count);
  
 //fd:是指文件描述符
// buf:写入的缓冲区(将缓冲区的数据写入fd里)
//count:写入的字节计数 
//返回值:成功返回写入的字节数,出错返回-1并设置errno

代码示例:

int main()

 {
   char *buf="luhengnizhenshuai";
   int fd;
   fd=  open("./fles1",O_RDWR);
   write(fd,buf,strlen(buf));//将buf里面的数据写入到fd里面
   close(fd);//来关闭文件,防止对文件造成损害或者破坏
   return 0;
}

3.read的用法

头文件

#include 

原型函数:

  ssize_t read(int fd, void *buf, size_t count); 
 
 //fd:是指文件描述符
// buf:读取的缓冲区(将缓冲区写入的数据读取)
//count:读取的字节计数 
//返回值:成功返回写入的字节数,出错返回-1并设置errno

代码示例:

int main()

 {
   char *buf="luhengnizhenshuai";
   int fd;
   fd=  open("./fles1",O_RDWR);
   int n_write=write(fd,buf,strlen(buf));//将buf里面的数据写入到fd里面
   char *readbuf=(char *)malloc(sizeof(char)*n_write+1);
   int n_read=read(fd,readbuf,n_write);//读取文文件写入的数据
   printf("read=%d conext:%s\n",n_read,readbuf);//输出读取多少字节数据,输出读取到的数据是啥
   close(fd);//不管是写入还是读取,都要来关闭文件,防止对文件造成损害或者破坏
  return 0}

4.光标lseek的用法

头文件:

 #include 
 #include 

函数原型:

off_t lseek(int fd, off_t offset, int whence);
//fd:是指文件描述符
//offset:偏移值
//whence:所要偏移值的位置

whence:
1.SEEK_SET 代表是指向文件的头
2.SEEK_END 代表是指向文件的尾
3.SEEK_CUR 代表是指向当前文件的位置

5.其他函数的补充

Linux系统编程—文件编程(open、write、read、lseek的用法)_第1张图片

代码示例:

#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main()

 {
       int fd;

  //int creat(const char *pathname, mode_t mode);
   fd=creat("./flel",S_IRWXU);//创建一个名为flel的文件

 return 0;

}

总结:学习文件的编程,不需要死记硬背这些函数,记住这些函数就行 ,当时用就去Linux下的man手册查询

你可能感兴趣的:(Linux系统编程)