文件操作(2)

25 篇文章 0 订阅
12 篇文章 1 订阅

目录

文件操作的步骤:

 流:

标准流: 

 文件指针:

文件信息区: 

概念:

关系转化: 

注意:

文件指针: 

文件的打开和关闭:

打开方式:

打开成功:

 读写的概念:

 操作代码演示:

相对路径和绝对路径:

绝对路径:

相对路径:

举例:



文件操作的步骤:

  1. 打开文件 
  2. 读/写文件
  3. 关闭文件

 流:

因为要朝不同的外部设备输出数据,或者从不同的外部设备中获取数据,这当中获取和拿取的过程和操作都是不同的,所以诞生了一个统一的操作和概念——流。

例如:C语言程序可以通过流获取数据,也可以将数据输送到流中至于后面传输到不同设备的操作,或者流从各种设备中拿取数据的操作都是由流负责程序只负责将数据从流中拿走,或者输出数据到流中。

 所以打开文件也相当于打开流

标准流: 

那为什么我们从键盘输入数据,向屏幕上输出数据,并没有打开流呢?

那是因为C语言程序在启动的时候,默认打开了3个流:

  • stdin- 标准输入流,在大多数的环境中从键盘输入,scanf函数就是从标准输入流中读取数据
  • stdout- 标准输出流,大多数的环境中输出至显示器界面,printf函数就是将信息输出到标准输出流中
  • stderr- 标准错误流,大多数环境中输出到显示器界面。

这是默认打开了这三个流,我们使用scanf、printf等函数就可以直接进行输入输出操作的。stdin、stdout、stderr 三个流的类型是: FILE*,通常称为文件指针。

C语言中,就是通过FILE* 的文件指针来维护流的各种操作的。

 文件指针:

缓冲文件系统中,关键的概念是"文件类型指针”,简称“文件指针”。

文件系统:文件系统就是C盘D盘这种,就是操作系统中管理文件的系统。

 

文件信息区: 

概念:

  • 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。
  • 这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名FILE. 

关系转化: 

文件信息区存放文件名字状态位置等等,而这些信息就是存放在一个结构体变量中,也就是说这个文件信息区就是一个结构体变量,或者说文件信息区是由一个FILE类型的结构体来描述的。

注意:

  1. 不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。
  2. 每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。 

文件指针: 

 FILE* pf;//⽂件指针变量
  • 可以使pf指向某个⽂件的⽂件信息区(是⼀个结构体变 量)。
  • 通过该⽂件信息区中的信息就能够访问该⽂件。也就是说,通过⽂件指针变量能够间接找到与 它关联的⽂件。 

 而且打开文件就会有文件信息区,文件信息区都会由一个文件指针维护,通过文件指针就可以操作这个文件。

 

文件的打开和关闭:

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。

在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。

ANSIC规定使用 fopen 函数来打开文件fclose 来关闭文件。

//打开文件
FILE * fopen ( const char * filename, const char * mode );
//关闭文件
int fclose ( FILE * stream );

打开方式:

打开成功:

 

 读写的概念:

 操作代码演示:

 

 FILE*pf = fopen("test .txt","w");

注意当前的文件所在处是编译器安排的,如果要打开别的地方的文件则需要使用路径。

相对路径和绝对路径:

绝对路径:

  fopen("C:\\Users \\zpeng\\Desktop\\test.txt","w ");

 

相对路径:

  •  .  表示路径,或者说是当前路径
  • ..  表示上一级的路径
举例:
FILE* pf = fopen("./../../test.txt","w");

当前路径的位置下的上一级路径的上一级路径。

FILEx pf = fopen("./../../hehe/test .txt","w");

 当前路径的位置下的上一级路径的上一级路径下的hehe文件下的test.txt文件

FILEx pf = fopen(".\\..\\..\\hehe\\test .txt","w");

两种写法一样.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值