VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 6258|回复: 85

[原创] 读写文件用c++封装的几种方法

  [复制链接]
79_avatar_middle
在线会员 发表于 2016-1-3 15:14:24 | 显示全部楼层 |阅读模式
文件读写,有很多方法,我现在总结了几种方法,分享给大家,


1:一般,如果想直接写文件,例子:

FILE * f = fopen(pstr,"w+b");

fwrite( Buf, 1, nLen, f );
fclose(f);


这个方式是将一定内容写到文件中,但是如果文件存在会删除文件重新写pBuf到新得文件;



2:如果想追加写文件,一般的方法是:

FILE * f = fopen(pstr,"a+b");

fwrite(  Buf, 1, nLen, f );
fclose(f);


这样,如果文件存在,会将Buf写到文件的后面,不会销毁文件;


3:在一般程序调试的时候,我们在写文件,希望在程序的运行过程中文件一直追加写,当程序再次运行的时候重新写新的文件追加写;

例如,写一个录音程序,启动程序,追加方法写录音;关闭程序;再次打开程序删除上次写的音频文件重新写追加文件录音;


一般的的解决方法是:

用方法2,追加写文件,程序运行关闭后,再次启动程序前,删除上次的文件,否则这次的内容会继续添加到上次的文件后面;


推荐解决方法:

fopen 的 “w+b”,方法, 当不关闭文件指针(fclose(f);)一直用fwrite,可以将文件一直写到文件后面,当重新fopen,a+b的时候文件重新建立;


所以可以将 文件指针“f”设置问全局变量,或者成员变量,但是这样就有些麻烦而且;


所以程序可以写成;

{

static FILE * f = fopen(pstr,"w+b");

fwrite(  Buf, 1, nLen, f );
}

这样,在程序重新启动之前 文件指针一直保存,所以可以一直追加写文件,当程序重新启动执行到这里的时候,又会删除上次文件重新写追加文件;


这样写,还是有点麻烦,因为每次都要写相同的代码,但是,目的就是将一定长处的内容写到文件中,所以在简化上述代码:


#define DebugWriteFile( pstr, Buf, nLen ) { static FILE * f = fopen(pstr,"w+b"); fwrite( Buf, 1, nLen, f ); }

void CDlg::OnBnClickedButton()
{

char ch1[10] = "12345 ";
DebugWriteFile("DebugWriteFile1.dat", ch1, 10 );


char ch2[10] = "67890 ";
DebugWriteFile("DebugWriteFile2.dat", ch2, 10 );
}

我的一点经验 ,分享给大家希望大家喜欢 ,希望大家给我加分,作为我发帖的动力

评分

参与人数 5驿站币 +8 热心值 +8 收起 理由
16_avatar_small 阳光 + 1 + 1 感谢分享!
18_avatar_small simple123456 + 1 + 1 支持原创!
65_avatar_small 编程者 + 2 + 2 很给力!
51_avatar_small Syc + 2 + 2 感谢分享!
88_avatar_small 寂寞江湖 + 2 + 2 赞一个!

查看全部评分





上一篇:自动更新VC6的resource.h资源ID和*.rc的Build版本号
下一篇:无法定位程序输入点K32EnumProcessModules于动态链接库KERNEL32.dll上 的错误解析
24_avatar_middle
在线会员 发表于 2016-1-3 16:28:16 | 显示全部楼层
来看看这个封装
88_avatar_middle
online_vip 发表于 2016-1-3 19:15:47 | 显示全部楼层
有你更精彩
15_avatar_middle
在线会员 发表于 2016-1-4 07:54:44 | 显示全部楼层

来看看这个封装
49_avatar_middle
online_vip 发表于 2016-1-4 09:22:17 | 显示全部楼层
GetHistoryContentGetHistoryContentGetHistoryContentGetHistoryContentGetHistoryContent
32_avatar_middle
online_vip 发表于 2016-1-4 09:57:27 | 显示全部楼层
6.2 线段、射线与直线
92_avatar_middle
online_vip 发表于 2016-1-4 10:14:20 | 显示全部楼层
支持看看了
65_avatar_middle
在线会员 发表于 2016-1-4 11:37:35 | 显示全部楼层
读写文件用c++封装的几种方法
57_avatar_middle
在线会员 发表于 2016-1-4 11:50:03 | 显示全部楼层
看看什么方法
70_avatar_middle
在线会员 发表于 2016-1-4 13:16:15 | 显示全部楼层
谢谢哈哈
17_avatar_middle
online_vip 发表于 2016-1-4 14:53:20 | 显示全部楼层
ddddddddddddddddddddddddd
55_avatar_middle
在线会员 发表于 2016-1-4 19:57:35 | 显示全部楼层
看看怎么样。。。。。。。。。。。。。。。。。。
02_avatar_middle
在线会员 发表于 2016-1-4 20:11:22 | 显示全部楼层
看看有帮助吗?
64_avatar_middle
online_vip 发表于 2016-1-5 00:41:28 | 显示全部楼层
iujhjkhkjhjkh
02_avatar_middle
在线会员 发表于 2016-1-5 04:49:56 | 显示全部楼层
来看看这个封装
60_avatar_middle
在线会员 发表于 2016-1-5 10:49:51 | 显示全部楼层
读写文件用c++封装的几种方法
65_avatar_middle
donate_vip 发表于 2016-1-5 12:39:00 | 显示全部楼层
谢谢分成
85_avatar_middle
在线会员 发表于 2016-1-5 14:18:45 | 显示全部楼层
路过感谢楼主 很给力赞一个
77_avatar_middle
在线会员 发表于 2016-1-5 15:38:37 | 显示全部楼层
来看看封装的怎么样
04_avatar_middle
在线会员 发表于 2016-1-6 04:14:49 | 显示全部楼层
谢谢分享了啦,呵呵!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-23 03:53

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表