以映射文件读写大文件希望能实现以下功能:
1、数据文件快速读写(数据文件最小为100M),存储格式:12.3,10.02,12.5,。
2、能实现对二进制文件的读写; 参考了一些网络资料,在我自己做的测试Demo当中,同样读取100M数据并显示在一个列表当中,二进制读取要比映射文件方式快的多。但是但文件大了以后二进制方式就不行了,必须用映射文件方式才可以,现在有好多疑问:
pData = (char *)MapViewOfFile(hFileMap,
FILE_MAP_WRITE | FILE_MAP_READ,
0, //64k 整数 大于4G文件时才用得到 偏移位置
0, //64k 整数(为什么是64k了,系统最小分配粒度64K)
0); //读的时候要读多少东西
以上函数那是否可以直接为double *,这样就不用一个一个判断字节,在转换为数据类型,在pData 分解和转换为数据类型时耗费了大量的时间,所以如果直接能用double *就节省了好多时间,如果可以,怎么实现,希望回帖的朋友亲自做过测试在回复。
1、数据文件快速读写(数据文件最小为100M),存储格式:12.3,10.02,12.5,。
2、能实现对二进制文件的读写; 参考了一些网络资料,在我自己做的测试Demo当中,同样读取100M数据并显示在一个列表当中,二进制读取要比映射文件方式快的多。但是但文件大了以后二进制方式就不行了,必须用映射文件方式才可以,现在有好多疑问:
pData = (char *)MapViewOfFile(hFileMap,
FILE_MAP_WRITE | FILE_MAP_READ,
0, //64k 整数 大于4G文件时才用得到 偏移位置
0, //64k 整数(为什么是64k了,系统最小分配粒度64K)
0); //读的时候要读多少东西
以上函数那是否可以直接为double *,这样就不用一个一个判断字节,在转换为数据类型,在pData 分解和转换为数据类型时耗费了大量的时间,所以如果直接能用double *就节省了好多时间,如果可以,怎么实现,希望回帖的朋友亲自做过测试在回复。
数据么就是一字节一字节在硬盘上呆着,你读出来的自然也是连续的这样的数据.至于指针类型这里只是编译器语法级别的事情,如果按你的描述只是要double *型的返回值直接强转就可以如果是要数据读完之后是放double数组里了那是另外的问题
必须手动 把ANSI 字符串 转换成 double