我维护一个具有以下代码的程序来将文件读取到字节数组:
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),它将在Base64中输出为一系列A&# 39; s,所以我的假设是字节数组被创建为文件的大小,但是每个字节的值都没有被分配。看看代码,我看不出任何明显的问题,所以如果有人知道的话我会非常感激。
答案 0 :(得分:0)
对于后代,我最终将其更改为File.ReadAllBytes
,但我也发现问题出在文件本身,而空字节数组实际上是正确的。即每个字节仍然是0的初始值,因此相应的base64字符串“A”也是正确的。