c# - 将 System.IO.Stream 转换为 Byte[]

标签 c# byte alfresco filestream

<分区>

我正在寻找可以将 System.IO.Stream 转换为 byte[] 的 C# 语言解决方案。我已经尝试了下面的代码,但我收到的 byte[] 为 null。有人可以指导我从下面的代码中遗漏的内容吗?我正在接收来自 Alfresco Web 服务的信息,除非保存到临时位置,否则我无法读取该文件。

 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();
        //}
    }

最佳答案

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

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;
}

关于c# - 将 System.IO.Stream 转换为 Byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44928851/

相关文章:

java - 将字符串转换为字节,然后再返回

java - webapp1的Html5视频使用webapp2的源,如何避免将webapp2暴露给外部网络的浏览器

图像的 C# .net Core 圆角

c# - 使用 AspNet.Identity UserManager 时检测更改

c++ - 使用无符号字符数组处理单个字节

java - 隐写术后第一个字节的位相差一位

workflow - Alfresco:如何更改自定义工作流程的启动任务名称?

alfresco - 我需要在露天创建一个类似 sql 表的模型

c# - Log4Net:如何将程序内部的日志记录结果输出到一个变量中?

c# - 从另一个索引器继承文档的语法是什么?