C# Stream 和 byte[] 之间的转换

/* - - - - - - - - - - - - - - - - - - - - - - - - 
 * Stream 和 byte[] 之间的转换
 * - - - - - - - - - - - - - - - - - - - - - - - */
///<summary>
/// 将 Stream 转成 byte[]
///</summary>
publicbyte[] StreamToBytes(Stream stream)
{
byte[] bytes =newbyte[stream.Length];
    stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
    stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
///<summary>
/// 将 byte[] 转成 Stream
///</summary>
public Stream BytesToStream(byte[] bytes)
{
    Stream stream =new MemoryStream(bytes);
return stream;
}
/* - - - - - - - - - - - - - - - - - - - - - - - - 
 * Stream 和 文件之间的转换
 * - - - - - - - - - - - - - - - - - - - - - - - */
///<summary>
/// 将 Stream 写入文件
///</summary>
publicvoid StreamToFile(Stream stream,string fileName)
{
// 把 Stream 转换成 byte[]
byte[] bytes =newbyte[stream.Length];
    stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
    stream.Seek(0, SeekOrigin.Begin);
// 把 byte[] 写入文件
    FileStream fs =new FileStream(fileName, FileMode.Create);
    BinaryWriter bw =new BinaryWriter(fs);
    bw.Write(bytes);
    bw.Close();
    fs.Close();
}
///<summary>
/// 从文件读取 Stream
///</summary>
public Stream FileToStream(string fileName)
{            
// 打开文件
    FileStream fileStream =new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
// 读取文件的 byte[]
byte[] bytes =newbyte[fileStream.Length];
    fileStream.Read(bytes, 0, bytes.Length);
    fileStream.Close();
// 把 byte[] 转换成 Stream
    Stream stream =new MemoryStream(bytes);
return stream;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

[快学Python3]函数

一、一个基本的函数 概述 简单的说,函数就是一种代码组织方式,让你可以实现单一、或关联功能的封装,以便高复用。 函数定义 下面我们看一看在Python中函数定义...

2846
来自专栏电光石火

array_shift() 函数

实例 删除数组中的第一个元素(red),并返回被删除元素的值: <?php $a=array("a"=>"red","b"=>"green","c"=...

2026
来自专栏PHP在线

PHP Predefined Interfaces 预定义接口

SPL提供了6个迭代器接口: Traversable遍历接口(检测一个类是否可以使用 foreach 进行遍历的接口)Iterator迭代器接口(可在内部迭代自...

3625
来自专栏xingoo, 一个梦想做发明家的程序员

剑指OFFER之链表中倒数第k个节点(九度OJ1517)

题目描述: 输入一个链表,输出该链表中倒数第k个结点。 (hint: 请务必使用链表。) 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例...

2049
来自专栏Python、Flask、Django

python中的filter函数

1002
来自专栏撸码那些事

C#集合类型大揭秘

1764
来自专栏丑胖侠

《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)

4.4.3 约束(Pattern的一部分) 前面我们已经介绍了条件约束在Pattern中位置了,那么什么是条件约束呢?简单来说就是一个返回true或者false...

2708
来自专栏静默虚空的博客

排序七 归并排序

要点 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得...

1877
来自专栏Linux驱动

26.C++- 泛型编程之类模板(详解)

在上章25.C++- 泛型编程之函数模板(详解) 学习了后,本章继续来学习类模板 类模板介绍 和函数模板一样,将泛型思想应用于类. 编译器对类模板处理方式和函数...

2964
来自专栏数据结构与算法

P3368 【模板】树状数组 2 单点查询与区间修改

题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数...

3837

扫码关注云+社区

领取腾讯云代金券