以映射文件读写大文件希望能实现以下功能:
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.   

    强转double 后不能按照double* 读取数据,请自己测试后在回复
      

  2.   

    你先要搞明白数据在硬盘上是怎么存放的,有些问题不需要测试.
    数据么就是一字节一字节在硬盘上呆着,你读出来的自然也是连续的这样的数据.至于指针类型这里只是编译器语法级别的事情,如果按你的描述只是要double *型的返回值直接强转就可以如果是要数据读完之后是放double数组里了那是另外的问题
      

  3.   

    要double *型的返回值直接强转完后在我进行对pData 分解时会出错
      

  4.   

    要double *型的返回值直接强转完后在我进行对pData 分解时会出错,不知道是何原因。请高手解答
      

  5.   

    double *  在内存里 不可能 是 以ANSI 字符储存的
    必须手动 把ANSI 字符串 转换成 double