繁体   English   中英

将数据文件读入C#中的字节数组

[英]Read a data file into a byte array in C#

我正在尝试将包含16位数字的大数据文件读入多维数组,但是我不确定C#中最快的方法。 我还需要它来处理8位数字。 在C ++中,我使用了非常快的fread()并将数据读取到“ myArray [,,,]]中,然后可以将其作为多维数组进行访问:

numberRead = fread( myArray, sizeof(short), 19531250, stream );

在C#中,我可以使用循环,但这非常慢。

using (BinaryReader reader = new BinaryReader(File.OpenRead(filepath)))
{
  for (int i = 0; i < 25; i++)
    for (int j = 0; j < 25; j++)
      for (int k = 0; k < 25; k++)
        for (int m = 0; m < 25; m++)
          for (int n = 0; n < 25; n++)
          {
            myArray[i, j, k, m, n] = reader.ReadInt16();
          }
}

有没有一种更快的方法可以将文件读入可以适用于8位和16位数据的数组中?

这很慢,因为您一直在向文件系统询问小数据。 您最好先将整个文件读入内存😉

using (var memStream = new MemoryStream(File.ReadAllBytes(filepath)))
using (BinaryReader reader = new BinaryReader(memStream))
{
    for (int i = 0; i < 25; i++)
        for (int j = 0; j < 25; j++)
            for (int k = 0; k < 25; k++)
                for (int m = 0; m < 25; m++)
                    for (int n = 0; n < 25; n++)
                    {
                        myArray[i, j, k, m, n] = reader.ReadInt16();
                    }
}

要读取带符号的8位整数,请将reader.ReadInt16()替换为reader.ReadInt16() reader.ReadSByte();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM