关于c#:将System.IO.Stream转换为Byte []

Converting System.IO.Stream to Byte[]

本问题已经有最佳答案,请猛点这里访问。

我正在寻找一种C语言的解决方案,可以将System.IO.Stream转换为byte[]。我试过下面的代码,但我收到的字节为空。有人能从下面的代码中找出我缺少的东西吗?我正在从Alfresco Web服务接收,除非保存到临时位置,否则无法读取文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 private static byte[] ReadFile(Stream fileStream)
    {
        byte[] bytes = new byte[fileStream.Length];

        fileStream.Read(bytes, 0, Convert.ToInt32(fileStream.Length));
        fileStream.Close();

        return bytes;

        //using (MemoryStream ms = new MemoryStream())
        //{
        //    int read;
        //    while ((read = fileStream.Read(bytes, 0, bytes.Length)) > 0)
        //    {
        //        fileStream.CopyTo(ms);
        //    }
        //    return ms.ToArray();
        //}
    }


一旦我为它做了一个扩展方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static byte[] ToArray(this Stream s)
{
    if (s == null)
        throw new ArgumentNullException(nameof(s));
    if (!s.CanRead)
        throw new ArgumentException("Stream cannot be read");

    MemoryStream ms = s as MemoryStream;
    if (ms != null)
        return ms.ToArray();

    long pos = s.CanSeek ? s.Position : 0L;
    if (pos != 0L)
        s.Seek(0, SeekOrigin.Begin);

    byte[] result = new byte[s.Length];
    s.Read(result, 0, result.Length);
    if (s.CanSeek)
        s.Seek(pos, SeekOrigin.Begin);
    return result;
}