将读取文件发送到字节数组

Issue reading file to byte array

我正在维护一个程序,该程序具有以下代码以将文件读取为字节数组:

using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
    fileStream.Position = 0;

    int fileSize = (int)fileStream.Length;
    int readSize;
    int remain = fileSize;
    var pos = 0;

    byteData = new byte[fileSize];

    while (remain > 0)
    {
        readSize = fileStream.Read(byteData, pos, Math.Min(1024, remain));
        pos += readSize;
        remain -= readSize;
    }
}

然后将此字节数组输出为 Base64 字符串:

var value = "File contents:" + Environment.NewLine + Convert.ToBase64String(byteData)

我们偶尔会看到的问题是输出只是一串 A,如 "AAAAAAAAAAAAAAAAAAAAAA",但更长。我已经想通了,如果你输出一个已初始化为给定长度但未分配值的字节数组(即每个字节仍为初始值 0),它将以 Base64 输出为一系列 A,所以我的假设是字节数组被创建为文件的大小,但是每个字节的值都没有被分配。查看代码我看不出有任何明显的问题,所以如果有人知道更好,我将不胜感激。

为了后代,我最终将其更改为 File.ReadAllBytes,但我也发现问题出在文件本身,空字节数组实际上是正确的。 IE。每个字节仍然是初始值0,所以相应的"A"s的base64字符串也是正确的。