文件IO知识点

1.文件打开

  #include <sys/types.h>

  #include <sys/stat.h>                                                

  #include <fcntl.h>

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

功能: 打开或创建文件

参数1:打开的文件的路径,包括文件名  (路径:可以是绝对路径 也可以是相对路径)

参数2:打开文件的方式

参数3:对新文件的访问权限  (可有可无)  如果参数2是O_CREAT 则参数3生效  

返回值:成功返回文件描述符 ,失败返回 -1

2.文件描述符的分配规则

     当前尚未分配的最小的非负整数

3.标准流:

        标准输入--键盘 0

        标准输出 -屏幕 1

        标准错误输出-屏幕 2 

4. 文件的权限

(1)      ls -l    //显示文件的详细信息

        drwxrwxr-x       2linux                linux              4096         Jul  31 23:28     hao

         -rw-rw-r--         1linux                linux                 0            Jul  26 19:49     file.c

        文件属性      文件所有者     文件所属组       文件大小    文件创建时间    文件名

(2)        第一个字符代表文件类型

        d 表示这个文件是目录

        - 表示这个文件是普通文件

        c 表示这个文件是字符设备文件

        l 表示这个文件是链接文件

        b 表示这个文件是块设备文件

        s 表示这个文件是套接字文件

        p 表示这个文件是管道文件

(3)        rwx rwx r-x    //r 可读    w 可写    x 可执行

        第一个rwx 代表文件所有者对文件的访问权限 读写执行

        第二个rwx  代表文件所属组对文件的访问权限  读写执行

        第三个r-x  代表其他用户对文件的访问权限  读和执行

(4)        chmod 更改文件的访问权限

        linux@ubuntu:~$ chmod +x test.c  //增加执行权限

        linux@ubuntu:~$ chmod -x test.c  //去掉执行权限

(5)        注意:

        1、文件的默认权限是没有x的,即文件的最大默认权限为666(-rw-rw-rw)

        2、由于进入目录和目录的x权限有关,故目录的最大默认权限为777(drwxrwxrwx)

5.写入  

#include <unistd.h>

       ssize_t write(int fd, const void *buf, size_t count);

       功能:将数据写入文件

       参数:   fd:文件

                     buf:要写的数据存放的位置

                     count:想写多少

       返回值: ssize_t  有符号整型

                       成功:返回实际写入的字节数

                       失败 :返回 -1

6.读取 

 #include <unistd.h>

       ssize_t read(int fd, void *buf, size_t count);

       功能:从文件中读数据

       参数:      fd:从fd关联的文件读数据

                        buf:读到的数据存放的位置

                        count:最多读多大

       返回值:  成功: 返回实际读到字节数

                       失败:-1  

                       读到文件结尾 返回0

7.关闭文件

   #include <unistd.h>

       int close(int fd);

       功能:关闭文件fd

       返回值:成功:返回0

                     失败:-1

8.flag 

O_CREAT

      如果文件不存在 则创建 如果文件存在 则打开

O_EXCL

        测试文件是否存在 如果O_CREAT时 文件已经存在 则open返回错误信息

O_TRUNC:

        清空文件内容

O_WRONLY

         只写方式打开文件

O_RDONLY

        只读

O_APPEND

        以追加方式打开文件 读写会从文件末尾开始

O_RDWR

        读写方式 

9.文件位置指针定位   

 #include <sys/types.h>

       #include <unistd.h>

       off_t lseek(int fd, off_t offset, int whence);

        功能:文件位置指针定位

        参数:    fd:文件

                       offset:偏移

                       whence:参照

              SEEK_SET 文件起始位置   lseek(fd,2,SEEK_SET);//相对文件起始位置 向右偏移2个字节

              SEEK_END 文件的末尾      lseek(fd,-2,SEEK_END);//相对文件末尾 向左偏移2个字节

              SEEK_CUR 当前位置         lseek(fd,3,SEEK_CUR);//相对当前位置 向右偏移3个字节

        返回值:  成功:返回文件位置指针相对于文件起始位置的偏移

                        失败:-1

      

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值