C实现读写文件
https://www.cnblogs.com/zhanghongfeng/p/7726199.html
https://www.cnblogs.com/xudong-bupt/p/3478297.html
https://zhidao.baidu.com/question/196852872.html
第一种方法 open
O_RDONLY: 以只读方式打开文件
O_WRONLY:以只写的方式打开文件
O_RDWR:以读写的方式打开文件
O_CREAT:若打开的文件不存在,则创建该文件
O_EXCL:如果打开文件是设置了O_CREAT,但是该文件存在,则导致调用失败
O_TRUNC:如果以只写或只读方式打开一个已存在的文件,将该文件截至0
O_APPEND:追加的方式打开文件
O_NONBLOCK:用于非堵塞接口i/o
O_NODELAY
O_SYNC:当数据被写入外存或者其他设备后,操作才返回。
int writeFile(const unsigned char *write_buff, uint write_bytes,
char *path) {
int d;
if ((d = open(path, O_RDWR | O_APPEND |O_CREAT)) == -) {
perror("open file failed\n");
return -;
}
if (write(d, write_buff, write_bytes) == -) {
perror("write data fail\n");
close(d);
return -;
}
close(d);
sync();
return ;
int readFile(unsigned char* read_buff, uint &read_bytes, char *path) {
int fd;
if ((fd = open(path, O_RDONLY)) == -) {
perror("open file failed\n");
return ;
}
read_bytes = read(fd, read_buff, );
close(fd);
return read_bytes;
第二种方法 fopen
"r ":只读方式打开一个文本文件 "rb ": 只读方式打开一个二进制文件
"w ":只写方式打开一个文本文件 "wb ": 只写方式打开一个二进制文件
"a ":追加方式打开一个文本文件 "ab ": 追加方式打开一个二进制文件
"r+ ":可读可写方式打开一个文本文件 "rb+ ": 可读可写方式打开一个二进制文件
"w+ ":可读可写方式创建一个文本文件 "wb+ ": 可读可写方式生成一个二进制文件
"a+ ":可读可写追加方式打开一个文本文件 "ab+ ": 可读可写方式追加一个二进制文件
返回值: 文件指针,如返回为NULL,表示打开失败
注意
(1)写操作fwrite()后必须关闭流fclose()。
(2)不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。
int writeFile(const unsigned char *write_buff, uint write_bytes,
char *path) {
FILE *file;
if ((file = fopen(path, "aw+")) == NULL) {
perror("fopen() error.Open file failed\n");
return -;
}
int res = fwrite(write_buff, sizeof(unsigned char), write_bytes, file);
fflush(file);
fclose(file);
return res;
}
int readFile(unsigned char* read_buff, uint &read_bytes, char *path) {
FILE* file;
if ((file = fopen(path, "r")) == NULL) {
perror("fopen() error.Open file failed\n");
return -;
}
read_bytes=fread(read_buff,sizeof(unsigned char),MAX_BUFF,file);
fclose(file);
return read_bytes;
}
要点:追加方式写文件,fwrite四个参数的意义,fflush
以及遇到的问题O_APPEND到底有没有作用
应该是一直有效的,以前好像是和O_TRUNC连用了的原因。
以及O_CREAT出现的问题 open with O_CREAT in second argument needs 3 arguments
现在不知道为什么不能重现这个问题了。
write注意点
如果文件原来有“你好”二字,以非追加写入“你”,文件依然是你好,所以有些情况要注意使用O_TRUNC。
C实现读写文件的更多相关文章
- Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- php中并发读写文件冲突的解决方案
在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...
- C#读写文件的方法汇总_C#教程_脚本之家
C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm
- Inno Setup 如何读写文件
软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...
- java使用IO读写文件总结
每次用到IO的读写文件都老忘记写法,都要翻过往笔记,今天总结下,省的以后老忘.java读写文件的IO流分两大类,字节流和字符流,基类分别是字符:Reader和Writer:字节:InputStream ...
- python读写文件时中文的转码问题
读写文件都要将中文转为unicode字符. 读文件: u = unicode(s, 'gbk') 这里不能使用encode 写文件: u = encode('utf')
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
1.流的简述及演示案例输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出.字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表. ...
- c# 高效读写文件
一.同步读写文件(在并发情况下不会发生文件被占用异常) static void Main(string[] args) { Parallel.For(0, 10000, e => { strin ...
随机推荐
- k8s调度器、预选策略及调度方式
一.k8s调度流程 1.(预选)先排除完全不符合pod运行要求的节点2.(优先)根据一系列算法,算出node的得分,最高没有相同的,就直接选择3.上一步有相同的话,就随机选一个 二.调度方式 1.no ...
- 老男孩python学习自修第十四天【序列化和json】
序列化是使用二进制的方式加密列表,字典或集合,反序列化是解密的过程:序列化开启了两个独立进程进行数据交互的通路 使用pickle进行序列化和反序列化 例如: pickle_test.py #!/usr ...
- Yii2控制台命令
Yii2控制台表格输出: 例如: $in_sheet_number_queue = []; $wms_material_in_sheet_list = \core\models\WmsMaterial ...
- Delphi窗体之间互相调用的简单问题
问题是这样的,我的程序主窗口Form1上面有一个数据连接(ADOCONNECTION1)和ADOQUERY,然后还有一些数据感知组件用于浏览用的,我打算点击From1中的一个“修改数据”按钮,就弹出F ...
- vue ajax
局部get: this.$http.get(url,{param:jsonData}).then(successCallback,failCallBack) 局部post: this.$http.po ...
- Simple Use IEnumerable<T>
Private static IEnumerable<T> FunDemo(T para) { while(...) { .... yield return Obj; } } static ...
- luogu1503
P1503 鬼子进村 题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. ...
- JavaScript知识点总结[部分]
变量 局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量. <script type="text/javascript"> // 全局变量 n ...
- mfs 使用心得
CentOS的安装方法: To install MooseFS from officially supported repository on EL7, follow the steps below: ...
- Codeforces Round #446 Div. 1
B:即使看到n<=22也应该猜到这只是为了写spj.将每个数替换为恰好比他大的数即可,最大值替换为最小值.这样原序列中不包含最小值的集合显然都满足条件,并且容易发现包含最小值的集合的变化量都是最 ...