📜  流到字节数组 c# (1)

📅  最后修改于: 2023-12-03 15:26:58.736000             🧑  作者: Mango

将流转换为字节数组 in C#

有时候,我们需要在C#中将流转换为字节数组。在这篇文章中,我们将学习如何做到这一点,同时还将介绍一些与此相关的重要概念。

将流转换为字节数组的方法

流是从输入或输出设备中读取或写入数据的一种方式。通常,它们被用于处理文件、套接字、内存等等。将流转换为字节数组通常是一个简单而快速的过程,常常被广泛地应用在各种C#应用程序中。下面是将流转换为字节数组的方法:

public static byte[] ReadFully(Stream stream)
{
    byte[] buffer = new byte[8192];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}
方法解释

ReadFully方法读取指定流的所有字节,并将它们写入MemoryStream对象中。在这个方法的最后,它使用MemoryStream.ToArray()方法将MemoryStream对象转换为字节数组并返回。

示例

下面是一个简单的示例程序,它演示了如何使用ReadFully方法将流转换为字节数组:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        StreamReader sr = new StreamReader("example.txt");
        byte[] bytes = ReadFully(sr.BaseStream);
        string str = System.Text.Encoding.Default.GetString(bytes);
        Console.WriteLine(str);
    }

    public static byte[] ReadFully(Stream stream)
    {
        byte[] buffer = new byte[8192];
        using(MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            return ms.ToArray();
        }
    }
}

在这个例子中,我们使用了StreamReader对象来读取“example.txt”文件的内容,然后使用ReadFully方法将其作为字节数组返回,并将其转换为字符串类型。 最后,我们将其打印到控制台上。