linux学习笔记-文件访问

                                 系统调用-文件访问

文件创建

Int creat(const char *filename,mode_t mode)

Filename:要创建的文件名(包含路径,缺省为当前路径)

Mode:创建模式。

  常见模式:

  S_IRUSR    可读                1

  S_IWUSR    可写                2

  S_IXUSR    可执行              4

  S_IRWUS    可读可写可执行

文件描述

 文件描述符本质是一个非负整数。当打开一个文件时,该整数由系统来分配。文件描述符的范围为0-OPEN_MAX即允许每个进程同时大力OPEN_MAX个文件

打开文件

  Int open(const char*pathname,int flags)

  Int open(const char*pathname,int flats,mode_t mode)

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

Flags:打开标志

  常见的打开标志

  O_RDONLY 只读方式打开

  O_WRONLY     只写方式打开

  O_RDWR       读写方式打开

  O_APPEDN      追加方式打开

  O_CREAT      创建一个文件

  O_NOBLOCK   非阻塞方式打开

如果使用了O_CREATE标志,当打开文件不存在时,会创建这个文件。必须使用函数

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

这时需要指定mode来表示文件的访问权限。

 

文件关闭

当我们操作完文件以后,需要关闭文件

  Int close(int fd)

Fd:文件描述符。

 

读文件

Int read(int fd ,const void *buf,size_t length)

功能:

   从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取到的字节数。

 

写文件

Int write (int fd ,const void *buf,size_t length)

功能:

length个字节从buf指向的缓冲区中写到文件描述符所指向的文件中,返回值位数实际写到缓冲区的字节数。

 

定位

Int lseek(int fd ,offset_t offset,int whence)

功能:

将文件读写指针相对whence移动offset个字节,操作成功时,返回文件指针相对于文件头的位置。

Whence可使用下述值

SEEK_SET:        相对文件开头

SEEK_CURRENT:  相对于文件读写指针的当前位置

SEK_END:        相对文件末尾

Offset可取负值,表示向前移动。

 

 

 

访问判断

有时我们需要判断文件是否可以进行某种操作(读,写等),这时可以使用access函数

  Int access(const char* pathname,intmode)

Pathname:文件名称

Mode:要判断的访问权限,可以取以下值或者是他们的组合值

     R_OK:文件可读

     W_OK:文件可写

     X_OK:文件可执行

     F_OK:文件存在。

返回值:当我们测试成功时,函数返回0,否则如果一个条件不符时,返回-1

 

         库函数-文件访问

C库函数的文件操作是独立于具体的操作系统平台的。

创建和打开

FILE *fileopen(const char * filename,const char *mode)

Filename:

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

Mode:

 打开模式

常见打开模式

r , rb  只读方式打开

w ,wb  只写方式打开,如果文件不存在,则创建该文件

a ,ab   追加方式打开,如果文件不存在,则创建该文件

r+ ,r+b,rb+    读写方式打开

w+ ,w+b,wh+  读写方式打开,如果文件不存在,则创建该文件

a+ ,a+b,ab++ 读和追加方式打开,如果文件不存在,则创建该文件

B用于区分二进制文件和文本文件,linux不区分二进制文件和文本文件

 

读文件

Size_t fread(void *ptr,size_t size,size_t n,FILE *stream)

功能

  从stream指向的文件中读取n个字段,每个字段为size字节,并将读取的数据放入ptr所指的字符数组中,返回实际已读取的字节数。

 

写文件

Size_t fwrite(const void*ptr, size_t size,size_t n,FILE *stream)

功能:

从缓冲区ptr所指的数组中把n个字段写到stream指向的文件中,每个字段长为size字节,返回实际写入的字节数。

读字符

Int fgetc(FILE *stream)

从指定的文件读取一个字节。

 

写字符

Int fputc(int c,FILE *stream)

向指定文件中写入一个字符。

 

格式化读

Fscanf(FILE *stream , char format[,argument..])

从一个流中进行格式化输入。

 

格式化写

Int fprintf(FILE *stream,char * format[,argument..])

格式化输出到一个流中。

 

定位

Int fseek(FILE *stream,long offset,int whence)

 

路径获取

在程序编写时,有时候需要得到当前路径。C库函数提供了getcwd来解决这个问题。

Char *getwcd(char *buffer,size_t size)

我们提供一个size大小的buffergetcwd会把当前的路径名copybuffer中,如果buffer太小,函数会返回-1.

 

创建目录

Int mkdir(char *dir ,int mode)

功能:创建一个新目录

返回值 :0表示成功,-1表示出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值