我正在嘗試將包含 16 位數字的大型數據文件讀取到多維數組中,但我不確定 C# 中最快的方法。我還需要它來處理 8 位數字。在 C++ 中,我使用 fread() ,它非??欤祿x取到“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 位數據的數組?
1 回答

烙印99
TA貢獻1829條經驗 獲得超13個贊
它很慢,因為您不斷向文件系統請求小塊數據。你最好先一次性將整個文件讀入內存??
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.ReadSByte();
- 1 回答
- 0 關注
- 104 瀏覽
添加回答
舉報
0/150
提交
取消