常用的Stream扩展

这个是我常用的Stream扩展,比较简单,也只有同步的读操作,后续会逐步添加相关功能。

public static class StreamExtend
{
    public static void WriteTo(this Stream stream, byte[] buffer, Action<byte[], int> DataHanlder)
    {
        try
        {
            int count = 0;
            if (DataHanlder == null)
                return;

            while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                DataHanlder(buffer, count);
            }
        }
        finally
        {
            stream.Close();
        }
    }

    public static string GetString(this Stream stream, Encoding encoding)
    {
        return encoding.GetString(stream.GetData());
    }

    public static string GetString(this Stream stream)
    {
        return stream.GetString(Encoding.Default);
    }

    public static byte[] GetData(this Stream stream)
    {
        using (var tmp = new MemoryStream())
        {
            stream.WriteTo(new byte[1500], (d, i) => tmp.Write(d, 0, i));
            return tmp.ToArray();
        }
    }
}

你可能感兴趣的:(Stream)