快速了解文件操作

TypeScript语言的文件操作 在这个简单的应用中,我们将用户上传的文件内容读取后显示在页面上,用户还能够通过点击按钮下载这些内容。通过这样的示例,我们能够清晰地看到TypeScript在文件操作中的应用场景。本文对TypeScript的文件操作进行了全面的探讨,包括客户端和服务器端的文件操作。我们不仅介绍了如何读取、写入和下载文件,还强调了错误处理的重要性。通过实际示例代码,读者可以更容易地理解如何在自己的项目中使用TypeScript进行文件处理。希望这篇文章能对你在TypeScript的学习和应用中有所帮助! 阅读详情

目录

一、文件操作

1.什么是文件

1.1程序文件

1.2数据文件 

 1.3文件名

2.文件的打开和关闭

2.1文件指针

 2.2文件的打开和关闭

 3.文件顺序读写

4.函数对比

5.文件的随机读写

5.1fseek

 5.2ftell

5.3rewind

6. 文本文件和二进制文件

 7.文件读取结束的判定

7.1feof使用

8.文件缓冲区


一、文件操作

1.什么是文件

磁盘上的文件是文件 。

一般文件分为两类:程序文件、数据文件(文件功能分)

1.1程序文件

源文件(后缀.c)、目标文件(windows环境 后缀 .obj)、可执行程序(windows环境   后缀.exe)

1.2数据文件 

 文件内容不一定是程序,而是程序运行时读写的数据

 1.3文件名

文件名包含3部分:文件路径+文件名主干+文件后缀

例如:c:\user\code\test.c 

文件标识常被称文件名

2.文件的打开和关闭

2.1文件指针

信息保存在一个结构体变量中,该结构体变量系统声明的,为FILE

 不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。

 2.2文件的打开和关闭

FILE *fopen(char *filename, char *mode);//文件打开
int *fclose(FILE *stream);//文件关闭 
打开方式说明
r以只读方式打开文件,只允许读取,不允许写入。该文件必须存在。
r+以读/写方式打开文件,允许读取和写入。该文件必须存在。
rb+以读/写方式打开一个二进制文件,允许读/写数据。
rt+以读/写方式打开一个文本文件,允许读和写。
w以只写方式打开文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件。
w+以读/写方式打开文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a以追加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF符保留)。
a+以追加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的EOF符 不保留)。
wb以只写方式打开或新建一个二进制文件,只允许写数据。
wb+以读/写方式打开或建立一个二进制文件,允许读和写。
wt+以读/写方式打开或建立一个文本文件,允许读写。
at+以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+以读/写方式打开一个二进制文件,允许读或在文件末追加数据。

 3.文件顺序读写

函数名适用于功能
fgetc所有输入流字符输入函数
fputc所有输出流字符输出函数
fgets所有输入流文本行输入函数
fputs所有输出流文本行输出函数
fscanf所有输入流格式化输入函数
fprintf所有输出流格式化输出函数
fread文件二进制输入
fwrite文件二进制输出

fgetc函数声明:int fgetc( FILE * fp );

fputc函数声明:int fputc( int c, FILE *fp );

fgets函数声明:char *fgets( char *buf, int n, FILE *fp );

fputs函数声明:int fputs( const char *s, FILE *fp );

fscanf函数声明:int fscanf(FILE *stream, const char *format, ...);

fprintf函数声明:int fprintf(FILE *stream, const char *format, ...);

4.函数对比

这里我们举出来的函数是fread和fwrite

实则每两对函数都是大体相仿的 

scanf 是针对标准输入的格式化输入语句

printf 是针对标准输入的格式化输出语句

fscanf 是针对所有输入流的格式化输入语句

fprintf 是针对所有输出流的格式化输出语句

sscanf 把一个格式化的数据写到字符串中

sprintf 把字符串转化成一个格式化数据

5.文件的随机读写

5.1fseek

可以随机将文件指针放到想要的位置

 int fseek (FILE * stream, long int offset , int origin );

使用例:

#include<stdio.h>
int main()
{
    FILE* pFile;
    pFile = fopen("example.txt", "wb");
    fputs("This is an apple.", pFile);
    fseek(pFile, 8, SEEK_SET);
    fputs(" sam", pFile);
    fclose(pFile);
    return 0;
}

运行结果:

 fseek还有其他的指向位置

指向
SEEK_SET文件的起始位置
SEEK_CUR文件当前指向的位置
SEEK_END文件末尾的位置

 5.2ftell

用于计算文件指针的偏移量

#include<stdio.h>
int main()
{
    FILE* pf;
    pf = fopen("contact.txt", "wb");
    fputs("abcdef", pf);
    fclose(pf);
    pf = NULL;
    pf = fopen("contact.txt", "rb");
    fseek(pf, 2, SEEK_SET);
    int ch = fgetc(pf);
    printf("%c\n", ch);
    printf("%d\n", ftell(pf));//3


    fseek(pf, -1, SEEK_END);
    ch = fgetc(pf);
    printf("%c\n", ch);
    printf("%d\n", ftell(pf));//6

    //fseek(pFile, 8, SEEK_SET);
    //fputs(" sam", pFile);
    fclose(pf);
    pf = NULL;
    return 0;
}

运行结果:

 

5.3rewind

 函数解释:将文件指针置回开头(用于文件指针找不到,或者想要文件从头开始)

#include<stdio.h>
int main()
{
    FILE* pf;
    pf = fopen("contact.txt", "wb");
    fputs("abcdef", pf);
    fclose(pf);
    pf = NULL;
    pf = fopen("contact.txt", "rb");
    fseek(pf, 2, SEEK_SET);
    int ch = fgetc(pf);
    printf("%c\n", ch);
    printf("%d\n", ftell(pf));//2


    fseek(pf, -1, SEEK_END);
    ch = fgetc(pf);
    printf("%c\n", ch);
    printf("%d\n", ftell(pf));//16

    //fseek(pFile, 8, SEEK_SET);
    //fputs(" sam", pFile);
    rewind(pf);
    ch = fgetc(pf);
    printf("%c\n", ch);//a   返回到了开始的a
    fclose(pf);
    pf = NULL;
    return 0;
}

运行结果:

 

6. 文本文件和二进制文件

文本文件:是以ASCll形式存储的

 二进制文件:是以二进制的形式存储的

使用例: 

#include<stdio.h>

int main()
{
    int a = 52013;
    FILE* pf = fopen("test.txt", "wb");
    fwrite(&a, 4, 1, pf);
    fclose(pf);
    pf = NULL;
    return 0;
}

 二进制文件存储:运行结果

 7.文件读取结束的判定

7.1feof使用

应用于当文件读取结束的时候,判断式读取失败结束,还是遇到文件尾结束

文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets)

feof判断:文件读取为NULL停止

ferror判断:文件读取错误停止

8.文件缓冲区

ANSIC标准采用“缓冲文件系统”处理的数据文件,内存数据向磁盘输出数据会先送到内存中的缓冲区

 

 

 

新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图) 本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。 阅读详情

相关推荐

Raptor码(一):2007RFC5053标准编解码学习

RFC 5053 标准

a_beatiful_knife的博客 3493

fopen中w w+ wb区别:

在C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。 如以下C代码:   #include char buf[10] = {10,10,10,10,10,10,10,10,10,10}; FILE

guyue6670的专栏 18万+

高速设计注意事项总结——MDI篇

在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容

qq_16237389的博客 1446

python打开文件时'w'与'wb'的区别,'r'与'rb'的区别

在windows中的换行符是\r\n 在python代码中, 如果以 如果以w方式写入: f = open('./abcd', "w") f.write('abc\nabcd') f.close() 文本w方式写入时, 遇到\n自动替换成\r\n, 以二进制文本读: >> > f = open('./abcd', 'rb') >> > print(f.r...

G-vitro的博客 6万+

微信小程序如何集成EasyRTC实现零插件音视频通话?5步搞定完整接入流程

本文详细介绍了如何在微信小程序中集成EasyRTC SDK,实现零插件的实时音视频通话功能。通过5个关键步骤,包括环境配置、SDK初始化、核心功能实现、性能优化和问题排查,帮助开发者快速完成WebRTC技术在小程序中的落地应用,解决微信小程序原生不支持实时音视频通信的技术难题。

weixin_28340315的博客 144

【异常】Codybuddy Error Code: 14003 too many requests 限流报错问题排查与解决指南

14003报错本质为服务端限流拦截,并非账号封禁或程序致命故障,90%以上的场景可通过等待冷却+规范使用行为解决。通过本文的排查步骤,可快速恢复工具使用,同时规避后续重复触发该问题。

奶爸的编程之路,也就一周冷个三天 1253

Python 文件操作 'w+' 和 'wb'的区别

在文件上传的时候遇到个问题,就是 'w+' 和 'wb' 在文件上传的时候是否回车。 根据项目的实景情况模拟一下区别。 首先说一下 'w+' 和 'wb' 的区别 。'w+' 是文本写入,'wb'是字节写入。 看代码。首先在window 操作系统下。 1.字节 # utf-8 # 模拟上传的文件内容 readFile = b'hello\r\nwolrd' temp = open(...

出埃及记 2万+

DO-297标准详解:IMA系统开发与认证指南

DO-297的前言部分为读者提供了本指南的概述,说明了该标准的编写背景、主要目标、目标受众以及该文件在开发和认证集成模块化航空电子(IMA,Integrated Modular Avionics)系统中的作用。作为现代航空电子架构的重要组成部分,IMA系统大幅度简化了航空电子系统的硬件配置,增加了灵活性并降低了成本。因此,DO-297成为确保IMA系统开发、集成和认证符合适航标准的核心文件。在现代航空领域,系统复杂性逐渐增加,传统上各子系统独立运行的方式已经不适应多任务、多功能的需求。

qq_41854911的博客 1586

WB和WT区别

如果数据直接写磁盘,就叫做直写,也就是write through如果数据先写到阵列卡的cache,这叫做回写,也就是write back 转载于:https://blog.51cto.com/9425473/1558129...

weixin_33712881的博客 2219

【小白深度教程 1.32】手把手教你从多视角图像进行 3D 重建(SfM 算法)

重建的目标是从一组照片中推导场景的几何结构,假设摄像机位置和内部参数是已知的或可以从图像集中猜测。 这是通过使用多个照片,在其中应用运动结构法(Structure from Motion,SfM)来解决像素级对应问题,部分地恢复3D信息来实现的。

2401_87064292的博客 2160

QT实现计算器(C/C++)

digitClicked()槽函数用于处理数字按钮的点击事件,operatorClicked()槽函数用于处理运算符按钮的点击事件,equalsClicked()槽函数用于处理等号按钮的点击事件。在operatorClicked()槽函数中,我们获取被点击按钮的文本作为当前运算符,并将文本框中的内容转换为双精度浮点数,存储为操作数1。在上述代码中,我们添加了一个私有成员变量m_operand1,用于存储第一个操作数的值,以及一个私有成员变量m_currentOperator,用于存储当前运算符的值。

CyberNova的博客 385

一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab /w/wt / r/rt )

关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂。今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获。 一、核心功能 ‘r’:只读。该文件必须已存在。 ‘r+’:可读可写。该文件必须已存在,写为追加在文件内容末尾。 ‘rb’:表示以二进制方式读取文件。该文件必须已存在。 ‘w’:只写。打开即默认创建一个新文件,如果文件已存在,则覆盖写(即文件内原始数据会被新写入的数据清空覆盖)。 ‘w+’:写读。打开创建新文件并写入数据,如果文件已

阿拉修 6466

【天气雷达】双偏振产品-差分反射率ZDR详解

双偏振产品-差分反射率ZDR详解。

珞瑜的博客 5410

c语言文件操作详解,快速了解文件如何使用

目录前言一、什么是文件?1.程序文件2.数据文件3.文件名二、文件的打开和关闭1.文件指针2.文件的打开与关闭三、文件的顺序读写 1.标准输入流和输出流2.文件的顺序读写3.输入输出函数的对比四、文件的随机读写1.fseek 2.ftell 3、rewind五、文本文件和二进制文件六、文件读取结束的判定 七、文件缓冲区 总结很多小伙伴都会遇到这样的问题,当程序退出的时候,保留的数据也不复存在了。在很多情况下,我们希望把数据记录下来。例如写一个通讯录,我们希望每一次运行程序时,之前存进去的数据都还在,只有当我

weixin_59371851的博客 2298

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C-文件操作实现数据持久化,帮你快速了解文件操作函数

帮你快速了解c语言的文件操作函数

Lizhihao_的博客 2952

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java文件操作的File类对文件的获取功能、判断功能、增删功能总结,快速了解掌握File类

Java中的File类对文件操作的总结 Java中是可以对文件进行操作的,可以对文件进行增删,也可以判断一个路径是文件还是目录等等,这一切来源于File类。今天我们要总结的是Java中FIle类的获取功能,判断功能,增删文件功能。具体的获取功能是什么呢,就是我们要获取File类对象的绝对路径,路径,文件或者文件目录的名字和文件的长度。对于还不懂如何创建File的对象则在意看一下作者的相关博...

执迷于技术和算法,让我们一起成长 403

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

新手如何快速学习C++!思路清晰好执行

C++中的变量定义有着严格的要求,例如变量必须先声明后使用,变量名必须符合一定的规则等。了解文件操作的基本概念和方法,例如文件的打开、读写、关闭等是非常重要的。同时,了解网络编程的基本概念和方法,例如套接字的创建、连接、发送接收数据等也是非常重要的。掌握这些运算符的用法是非常重要的。新手可以通过以上的方法和技巧来快速入门C++,并且不断地深入学习,提高自己的技能水平。了解C++的函数和方法的定义、参数传递、返回值等是非常重要的。C++是一种面向对象的编程语言,了解C++的面向对象编程是非常重要的。

m0_66194642的博客 631

文件操作

// Java example code to create a new file try { File file = new File("path and file_name"); boolean success = file.createNewFile(); } catch (IOException e) ...

weixin_33966365的博客 86

人生苦短我用Python,本文助你快速入门

文章目录前言Python基础注释变量数据类型浮点型复数类型字符串布尔类型类型转换输入与输出运算符算术运算符比较运算符赋值运算符逻辑运算符if、while、for容器列表元组字典集合函数函数的定义缺省参数命名参数不定长参数匿名函数闭包和装饰器包和模块包模块面向对象类和对象构造方法访问权限继承异常处理捕获异常抛出异常文件操作读写文件文件管理操作JSON正则表达式单字符匹配数量表示边界表示转义字符匹配分组操作函数 友情提示:本文针对的是非编程零基础的朋友,可以帮助我们快速了解Python语法,接着就可以快乐的投

耶low的博客 925

shell脚本系列:10、快速上手bash脚本:简单有效的shell脚本示例

shell脚本系列:10、快速上手bash脚本:简单有效的shell脚本示例 文章目录shell脚本系列:10、快速上手bash脚本:简单有效的shell脚本示例前言1. hello world2. 使用echo打印3. 使用注释4. 多行注释5. while循环6. for循环7. 接收用户输入8. if语句9. 使用if elif else10. 使用AND运算符11. 使用OR运算符12. case分支选择结构13. 命令行参数14. 获取带有名称的参数15. 连接字符串16. 切片字符串17. 使

逍遥游的博客 784

java对比php快速入门

比较方面:变量,字符串,数组,判断,循环,函数 ,命令行参数,时间,文件,数组操作,调试 比较项目 php java 变量 弱类型语言,变量可以任意代表任何类型 $age = 13; $name = "pengpeng"; $money = 150.53; ...

zzz_781111的专栏 734

从Windows到Mac的快速使用入门

转载自:http://marshal.easymorse.com/archives/category/info_tech/page/6 本文针对有Windows使用经验,需要快速了解Mac使用的开发人员。 Finder和资源管理器 看到一个崭新的Mac环境,对于有windows使用经验的人来说,可能第一个问题是资源管理器在哪里。 和windows资源管理器对应的Mac工具,...

weixin_30244889的博客 115

一名合格的程序员所需要了解的Windows下的PowerShell操作

读完这篇文章以后,你将学会命令行使用者每天接触的大部分基本命令,而且你将能基本理解目录以及一些别的概念。 学习方法 现在告诉你怎样记东西。 告诉自己你一定会去做。不要试图去找技巧或者小窍门什么的,安心去做这件事就好了。 把你要记的东西写在索引卡上。要学的东西写在一面,答案写在另一面。 每天花15~30分钟,专心学习你的索引卡,试着把每一张都记住。把你没记住的卡片单独放一摞,没事干的时候就专门学习一下。最后把所有卡放一整摞,测验一下自己提高了多少。 晚上睡觉前花5分钟学习一下自己答错的卡片。 Windo

weixin_49172439的博客 4633

《Total Commander:万能文件管理器》——第2.2节.快速了解一款软件的4条途径

本节书摘来自异步社区《Total Commander:万能文件管理器》一书中的第2章,第2.2节,作者 张玉新,更多章节内容可以访问云栖社区“异步社区”公众号查看。 第2.2节.快速了解一款软件的4条途径 如何不安装软件,而能快速对软件有所了解呢?据善用佳软的经验,共有 4 项主要途径: 1.访谈用户; 2.查看界面; 3.搜索评论; 4.研究功能。 上...

weixin_33738555的博客 582

入门基础概念

入门基础概念

weixin_45654421的博客 211

JAVA 文件操作

平常经常使用JAVA对文件进行读写等操作,这里汇总一下常用的文件操作。 1、创建文件 public static boolean createFile(String filePath){ boolean result = false; File file = new File(filePath); if(!file.exists()){ try { res

brushli的专栏 1万+
上一篇: 字符串函数与内存函数实现
下一篇: 程序环境与预处理详解
学习自省
博客等级 码龄5年 284粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值