利用C++文件流进行数据块的读写
来源:互联网 发布:microsoft网络是什么 编辑:程序博客网 时间:2024/06/02 23:40
科研项目上遇到一个文件流的读写问题,要把一个图片像素大小(1392*1038)的矩阵(double型)数据写入磁盘,一开始是用ofstream将数据逐个写入txt文件中,这样做的结果就是写出的文件太大,不利于存储和转移,而且读写速度奇慢,很影响后续工作的速度。还好最近看了leveldb的源码,知道用ofstream的read、write函数将内存中的一块数据与磁盘进行读写。尝试了下,速度和文件的大小都大大改善。
打开文件的方式在ios类(所以流式I/O的基类)中定义,有如下几种方式:
- ios::in 为输入(读)而打开文件
- ios::out 为输出(写)而打开文件
- ios::ate 初始位置:文件尾
- ios::app 所有输出附加在文件末尾
- ios::trunc 如果文件已存在则先删除该文件
- ios::binary 二进制方式
具体的如果你要像我一样将内存中的一块数据写入磁盘,就要设置打开方式ios::binary,默认是ios::text;
读写时,记得将指向内存中数据块的指针转化为char*;
源码如下:
__int64 buffsize = sizeof(double)*W_I_D_T_H*H_E_I_G_H_T;ifstream H1("./pd_bmp/pd_R_X_1.bin",ios::in|ios::binary);double *h1 = new double[W_I_D_T_H*H_E_I_G_H_T]; //图像尺寸W_I_D_T_H*H_E_I_G_H_TH1.read((char*)h1,buffsize);
0 0
- 利用C++文件流进行数据块的读写
- java使用IO对象流进行数据读写
- 在acm比赛时用文件流进行数据测试
- C语言以数据块的形式读写文件
- 125 C语言以数据块的形式读写文件
- java中使用文件输入流和文件输出流进行文件读写的用例!
- 在网络中使用IO流进行数据收发
- [转]在网络中使用IO流进行数据收发
- 在网络中使用IO流进行数据收发
- 在网络中使用IO流进行数据收发
- 利用C/C++库函数读写文件的基本用法
- 以数据块的形式读写文件
- 文件的读写代码块(二)
- C文件的读写
- C文件的读写
- 【C语言提高49】按照块读写文件
- [Java基础]用流进行byte字节流的读写
- Java中通过输入输出流进行文件的读写
- iOS开发之手势识别汇总
- GRE写作必备句型
- cleanmymac卸载不干净怎么办
- CentOS 6.2编译安装CodeLite 5.3
- 2.创建一个20个大小的随机数组,然后输入一个数,判断是否存在这个数
- 利用C++文件流进行数据块的读写
- iOS隐藏UITableview下面多余的tableviewcell的线条
- log4j2使用总结
- Postman - 网页调试与发送网页HTTP请求的Chrome插件
- 用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
- Mac终端常用命令
- AdapterView与Adapter(一)
- 运行pig出错Unhandled internal error. Found interface jline.Terminal, but class was expected
- vmware使用问题汇总