Linux系统编程——文件

 1.文件打开及创建

        1.1 文件描述符fd(file discribtion)

                open的返回值即为文件描述符

                用于write,read

                如下图      
                

        1.2 open函数的使用

                1.2.1参数说明

                        pathname:char*型,为文件路径

                        flags:O_RDONLY:可读打开

                                   O_WRONLY:可写打开

                                   O_RDWR:可读可写打开

                                   O_CREAT :若文件不存在则创建它。使用此选项时,需要同时说明第三个                                                          参数mode,用其说明该新文件的存取许可权

                                   O_EXCL:如果同时指定了OCREAT,而文件已经存在,则出错。

                                                     (如果文件已经存在则返回值为-1)
                                   O_APPEND:每次写时都加到文件的尾端。
                                   O_TRUNC:属性去打开文件时,如果这个文件中本来是有内容的,而且为                                                          只读或只写成功打开.则将其长度截短为0。

                                   mode:文件权限 可读:0400

                                                               可写:0200

                                                               可执行:0100

如下图

Demo——O_EXCL:

Demo——O_APPEND: 

Demo——O_TRUNC:

                1.2.2返回值

                        如果打开成功,fd为非负整数

                        如果打开失败,fd为-1

        1.3文件的权限

                ls-l 显示文件清单

                -rwx

                r:可读权限

                w:可写权限

                x:可执行权限

                如下图 

        1.4 creat函数

                1.4.1 参数说明

                        pathname:文件路径

                        mode:创建模式

                1.4.2 mode的宏

Demo如下:

2.文件写入操作

        2.1 write函数

                2.1.1参数说明

                        fd:文件描述符

                        buf:缓冲区数据

                        count:需要从缓冲区写入的数据大小

                        通常用strlen(buf)

                2.1.2返回值

                        写入成功:写入的个数

                        写入失败:-1

 如下图

        2.2 close函数

                2.2.1参数说明        

                        fd:文件描述符

                2.2.2返回值

                        成功返回0

                        失败返回-1

如下图

Demo如下:

3.文件读取操作

        3.1 read函数

                3.1.1参数说明

                         fd:文件描述符

                         buf:将读取的文件放入的缓冲区

                         count:要从目标文件读取的内容大小

                3.1.2返回值

                        成功:读取的字节数

                        失败:-1

                3.1.3错误信息

                        EAGAIN(用perror打印出来)

如下图    

                3.1.4开辟存储空间

                        

        3.2光标问题

                3.2.1如何将光标移动到开头

                        1.重新打开文件

                        2.lseek

如下图 

 Demo如下

4.文件光标移动操作

        4.1 lseek函数

                4.1.1 参数说明

                        fd:文件描述符

                        offset:将文件读写指针相对whence移动offset个字节

                        whence:SEEK_SET——文件开头

                                        SEEK_CUR——当前位置

                                        SEEK_END——文件结尾

如下图

                4.1.2返回值

                        成功:文件字节数

                        失败:-1

Demo如下:

 5.文件操作原理简述

        5.1文件描述符

        

                 5.1.1系统默认文件描述符

                        0:标准输入

                        1:标准输出

                        2:标准错误

                5.2文件操作

        

                5.2.1动态文件和静态文件

                         

                        静态文件:平时存放在磁盘的文件

                        动态文件:open静态文件后产生的文件,在内核中产生结构体,存放文件标识                                              符,信息节点,以及buf缓冲区

                        用内存读写比较灵活,用块读写不灵活

6.实现cp指令

        6.1代码思路

         6.2 代码Demo

7.修改配置文件

        7.1代码思路 

         7.2 strstr函数

                7.2.1函数参数

                        参数1:要在哪个字符串中查找

                        参数2:要查找的内容

                7.2.1返回值

                        指向要查找的首位置的指针变量

        7.3代码Demo

 8.写入一个结构体到文件

        8.1代码Demo

9.标准C库对文件操作引入

        9.1 open和fopen的区别

                9.1.1来源

                9.1.2移植性

                9.1.3适用范围

                9.1.4文件IO层次

                 9.1.5缓冲

10.标准C库打开创建文件读写文件光标移动

        10.1 打开创建文件

                10.1.1 fopen函数

                        10.1.1.1参数说明 

                             

 path:文件路径,mode:权限

 

注意:mode为指针变量,应该加双引号,如"w+"

代码Demo

                 10.2.1 fwrite函数

                        10.2.1.1参数说明

ptr 缓冲区

size 单个字符的大小

nmemb 字符的数量

stream 要写的文件

                        10.2.1.2返回值

                                     return:nmemb                          

两种写法 

                10.3.1 fread函数

                        10.3.1.1参数说明

同fwrite

                        10.3.1.2返回值

                                实际读的次数

                 10.4.1 fseek函数        

                        10.4.1.1参数说明

stream fopen返回值

offset 偏移值

whence 何处(参数同lseek)

代码Demo

11.标准C库写入结构体到文件

 

 与Linux API写法类似

12.文件其他函数

        12.1 fputc函数

                12.1.1 参数说明

                        c:要写入的字符

                        stream:要写入的文件

                        

Demo

         12.2 feof函数

                12.2.1 参数说明

                        stream:fopen的返回值

                12.2.1 返回值

                        光标到文件的尾巴:非0

                        光标没有到文件的尾巴:0

        12.3 fgetc函数

                12.3.1 参数说明

                         stream:fopen的返回值

Demo

 Linux系统编程——文件完结

                      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值