C/C++读写二进制文件
最近在给android层提供支持,因此代码都是用标准库库函数写出来的,好多windows和第三方的库不能或者很难使用,下面有我在读写二进制文件时候的一些心得,也算是一种总结吧
1、读二进制信息
bool bRet = true;
std::ofstream fout(szDestFile, std::ios::binary | std::ios::app);
std::ifstream fin(szOrigFile, std::ios::binary); if (fin.bad())
{
bRet = false;
}
else
{
while(!fin.eof())
{
char szBuf[] = {}; fin.read(szBuf, sizeof(char) * ); if (fout.bad())
{
bRet = false;
break;
} //
fout.write(szBuf, sizeof(char) * );
}
} fin.close();
fout.close();
这种方式读写二进制信息适用于读取一些二进制结构信息,如果读取像图片这样的二进制文件时,特别不方便,那么久需要一次性的读取文件的所有内容。
C++实现方式:测试通过
filebuf *pbuf;
ifstream filestr;
long size;
char * buffer;
// 要读入整个文件,必须采用二进制打开
filestr.open ("test.txt", ios::binary);
// 获取filestr对应buffer对象的指针
pbuf=filestr.rdbuf(); // 调用buffer对象方法获取文件大小
size=pbuf->pubseekoff (,ios::end,ios::in);
pbuf->pubseekpos (,ios::in); // 分配内存空间
buffer=new char[size]; // 获取文件内容
pbuf->sgetn (buffer,size); filestr.close();
// 输出到标准输出
cout.write (buffer,size); delete []buffer; C方式:
FILE * pFile;
long lSize;
char * buffer;
size_t result; pFile = fopen ("test.txt", "rb" );
if (pFile==NULL)
{
fputs ("File error",stderr);
exit ();
} fseek (pFile , , SEEK_END);
lSize = ftell (pFile);
rewind (pFile); buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL)
{
fputs ("Memory error",stderr);
exit ();
} result = fread (buffer,,lSize,pFile);
if (result != lSize)
{
fputs ("Reading error",stderr);
exit ();
} printf("%s", buffer); fclose (pFile);
free (buffer);
C/C++读写二进制文件的更多相关文章
- 【转】C++读写二进制文件
原文网址:http://blog.csdn.net/lightlater/article/details/6364931 摘要: 使用C++读写二进制文件,在开发中操作的比较频繁,今天有幸找到一篇文章 ...
- [Matlab+C/C++] 读写二进制文件
introduction 因为Matlab操作简单.方便,它被应用于很多领域:音频处理,图像处理,数值计算等.尽管MATLAB容易操作,但受限于他的语言解释机制,MATLAB的执行速度通常较低.C/C ...
- c++读写二进制文件
要读取文件必须包含<fstream>头文件,这里包含了C++读写文件的方法,可以使用fstream 类,这个类可以对文件进行读写操作. 1.打开文件. 打开文件可以有两种方式,第一 ...
- Java读写二进制文件示例
相对于文本文件,二进制文件读写快,定位快而准,下面是代码示例: import java.io.DataInput; import java.io.DataOutput; import java.io. ...
- C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)
原文地址http://www.javayihao.top/detail/168 一:概述 1.程序在运行中产生的数据都是临时数据,程序一旦运行结束会被释放,可以通过文件相关的操作将数据持久保存. 2. ...
- C语言读写二进制文件
fseek用法 fseek用来移动文件指针.函数原型 int fseek(FILE * stream, long offset, int fromwhere); 参数解释: stream 是文件流指针 ...
- C++ ifstream,ofstream读写二进制文件
为什要吧数据存为二进制 这个嘛,是我个人习惯,一般,我们会把日志文件存为文本文件.数据文件存成二进制文件. 其实,我们接触的文件,比如图像.视频都是以二进制的形式存储的,要想查看这类数据,必须知道数据 ...
- java 按字节读写二进制文件(Base64编码解码)
最近在做项目时遇到这样一个需求:依次读取本地文件夹里所有文件的内容,转为JSON,发送到ActiveMQ的消息队列, 然后从MQ的消息队列上获取文件的信息,依次写到本地.常见的文件类型,比如.txt ...
- python 读写二进制文件实例
本程序,首先写入一个矩阵到二进制文件中,然后读取二进制文件恢复到另外一个矩阵中. #coding:utf--8 #https://www.cnblogs.com/cmnz/p/6986979.html ...
随机推荐
- UOJ#206. 【APIO2016】Gap 构造 交互题
原文链接www.cnblogs.com/zhouzhendong/p/UOJ206.html 题解 T = 1 的情况直接大力从两边向中间询问即可. T = 2 的情况挺妙的,我没想到. 考虑首先花费 ...
- Tag Helpers 的使用介绍
什么是 Tag Helpers ? 在 Razor 文件中,Tag Helpers 能够让服务端代码参与创建和渲染 HTML 元素.例如,内置的ImageTagHelper能够在图像名称后面追加版本号 ...
- DCDC设计指南1
DC/DC电源设计指导:一 在设计电源模块的时候,第一时间要把该电源IC的datasheet资料下载好,查看里面的说明: 下面以一款DC/DC转换IC为例: 开始布局前先看下IC的特性说明,图1: 图 ...
- centos6.5使用LVM
1.添加硬盘 centos6以前的版本用kudzu来不重启识别新硬件. [root@xen01 ~]# /etc/init.d/kudzu start -bash: /etc/init.d/kudzu ...
- Javascript 的变量提升与预解析
一.什么是变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分 二.怎么实现 ...
- TypeScript 函数-Lambads 和 this 关键字的使用
let people = { name:["a","b","c","d"], /* getName:function() ...
- php位运算
php位运算 /** * 位运算 */ echo "<pre>"; $aa = $a&$b; //按位与,相同位都为1时为1,其他都为0; echo " ...
- C#转发Post请求,包括参数和文件
/// <summary> /// 转发Post请求 /// </summary> /// <param name="curRequest">要 ...
- 关于using namespace std
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~关于using namespace std ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- 刚发现 CSS 还存在一个命名规范 B.E.M
Block !误区:这个block并非inline-block里的block,而是将所有东西都划分为一个独立的模块,一个header是block,header里嵌套的搜索框是block,甚至一个ico ...

