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

时间:2017-01-31 06:17:36

标签: c# arrays io filestream

我维护一个具有以下代码的程序来将文件读取到字节数组:

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,如#A; AAAAAAAAAAAAAAAAAAAAAAA"但更长。我已经发现,如果你输出一个已经初始化为给定长度但没有赋值的字节数组(即每个字节仍然是初始值0),它将在Ba​​se64中输出为一系列A&# 39; s,所以我的假设是字节数组被创建为文件的大小,但是每个字节的值都没有被分配。看看代码,我看不出任何明显的问题,所以如果有人知道的话我会非常感激。

1 个答案:

答案 0 :(得分:0)

对于后代,我最终将其更改为File.ReadAllBytes,但我也发现问题出在文件本身,而空字节数组实际上是正确的。即每个字节仍然是0的初始值,因此相应的base64字符串“A”也是正确的。