用FileStream呀。然后一小块一小块的读。

解决方案 »

  1.   

    可以用BinaryReader:using (BinaryReader br = new BinaryReader(File.OpenRead("yourfile.dat")))
    {
        for (int i = 0; i < 10; i++)
        {
            double d = br.ReadDouble();
        }
    }
      

  2.   

    我用system.convert.Todouble转换过,但也有错误出现,所以就换方法了~
    您有什么更好的方法吗?
      

  3.   

    为什么要一小块一小块的读呢?
    能不能贴出代码呢?万分感谢!!!
    600万你说全部一下子读入。。会内存溢出的。读dat要看里面的格式协义是什么,没有标准的代码。
      

  4.   

    你是如何将那么多double数据存到文件中的?总该有个存储规则吧。
    按照保存时的规则读取,这是最常规的做法,如果是自己写代码存储,最便捷的做法就是xml或json序列化后存储到文件,那样只要来个反序列化就得到原来的内容了。
      

  5.   

    600w听着怎么像csdn的密码包...
      

  6.   

    为什么要一小块一小块的读呢?
    能不能贴出代码呢?万分感谢!!!
    600万你说全部一下子读入。。会内存溢出的。读dat要看里面的格式协义是什么,没有标准的代码。
    哦,谢谢您~dat文件是采集卡传回来的数,我们自己存成了dat文件格式,具体里面什么协议我就不知道了~~但是matlab里面的读取语句是这样的:fidin=fopen('E:\我的资料\FIR滤波器设计\230.dat','r','s');
    Data=fread(fidin,'double');
    x1=Data(2:3000001)';
    x2=Data(3000002:6000001)';
      

  7.   

    那些数据是通过采集卡的数据,Labview编程存回来的!
      

  8.   

    为什么要一小块一小块的读呢?
    能不能贴出代码呢?万分感谢!!!
    600万你说全部一下子读入。。会内存溢出的。读dat要看里面的格式协义是什么,没有标准的代码。
    哦,谢谢您~dat文件是采集卡传回来的数,我们自己存成了dat文件格式,具体里面什么协议我就不知道了~~但是matlab里面的读取语句是这样的:fidin=fopen('E:\我的资料\FIR滤波器设计\230.dat','r','s');
    Data=fread(fidin,'double');
    x1=Data(2:3000001)';
    x2=Data(3000002:6000001)';
    这个DATA 转成C#应是 byte吧 就是说他取的数组是从第二字节到第 3000001字段 然后再读3000002到600001这样,不知我对不对,你查一下百度
      

  9.   

    得到的果然是double数据,但是数据不对额,可能数据类型不匹配
      

  10.   

    为什么要一小块一小块的读呢?
    能不能贴出代码呢?万分感谢!!!
    600万你说全部一下子读入。。会内存溢出的。读dat要看里面的格式协义是什么,没有标准的代码。
    哦,谢谢您~dat文件是采集卡传回来的数,我们自己存成了dat文件格式,具体里面什么协议我就不知道了~~但是matlab里面的读取语句是这样的:fidin=fopen('E:\我的资料\FIR滤波器设计\230.dat','r','s');
    Data=fread(fidin,'double');
    x1=Data(2:3000001)';
    x2=Data(3000002:6000001)';
    这个DATA 转成C#应是 byte吧 就是说他取的数组是从第二字节到第 3000001字段 然后再读3000002到600001这样,不知我对不对,你查一下百度
    matlab很智能的提取的,在c#里面要考虑到数据的类型,即使是double的,貌似也要判断它的位数,然后不同的类实现的又不一样,用几种方法得到的数据都因为匹配不上而得不到应有的数据,好麻烦的样子!!
    我无能为力了还望大神给出解决意见和方法。。