关于Stream系列实战
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; namespace StreamTest
{
class Program
{
static void Main(string[] args)
{
byte[] buffer = null;
string testString = "Stream! Hello world";
char[] readCharArray = null;
byte[] readBuffer = null;
string readString = string.Empty;
//MemoryStream
using (MemoryStream stream = new MemoryStream())
{
Console.WriteLine("初始化字符串为:{0}", testString);
//如果该流可写
if (stream.CanWrite)
{
//尝试将testString写入流中
buffer = Encoding.Default.GetBytes(testString);
//我们从该数组的第一个位置开始写,长度为3,写完之后stream 中便有了数据
stream.Write(buffer, 0, 3);
Console.WriteLine("现在Stream.Positon在第{0}位置", stream.Position + 1);
//从刚才结束的位置往后移3位,到第7位 long newPositionInStream = stream.CanSeek ? stream.Seek(3, SeekOrigin.Current) : 0;
Console.WriteLine("重新定位后Stream.Position在第{0}位置", newPositionInStream + 1);
if (newPositionInStream <buffer.Length)
{
stream.Write(buffer, (int)newPositionInStream, buffer.Length - (int)newPositionInStream);
}
stream.Position = 0;
//设置一个空盒子来接收流中的数据,长度根据stream的长度来决定
readBuffer = new byte[stream.Length];
//设置stream 总的读取数量
//注意! 这时候流已经把数据读到了readBuffer中
int count = stream.CanRead ? stream.Read(readBuffer, 0, readBuffer.Length) : 0;
int charCount = Encoding.Default.GetCharCount(readBuffer, 0, count);
readCharArray = new char[charCount];
Encoding.Default.GetDecoder().GetChars(readBuffer, 0, count, readCharArray, 0);
for (int i = 0; i < readCharArray.Length;i++ )
{
readString += readCharArray[i];
}
Console.WriteLine("读取的字符串为:{0}", readString);
}
stream.Close();
}
Console.ReadLine();
}
}
}
关于Stream系列实战的更多相关文章
- webpack 多页应用架构系列实战
阅读目录 1.webpack配置了解 2.webpack CommonsChunkPlugin公共代码剥离 3.了解ProvidePlugin的用途 回到顶部 1.webpack配置了解 webpac ...
- [徐培成系列实战课程]docker篇
[徐培成系列实战课程]docker篇 如何利用docker快速构建Spark独立模式的集群 1.介绍 利用docker容器技术快速构建跨节点的独立模型的Spark大数据集群.Spark是时下非常热门的 ...
- 【SpringBoot基础系列-实战】如何指定 bean 最先加载(应用篇)
[基础系列-实战]如何指定 bean 最先加载(应用篇) 在日常的业务开发中,绝大多数我们都是不关注 bean 的加载顺序,然而如果在某些场景下,当我们希望某个 bean 优于其他的 bean 被实例 ...
- 《Java8 Stream编码实战》正式推出
当我第一次在项目代码中看到Stream流的时候,心里不由得骂了一句"傻X"炫什么技.当我开始尝试在代码中使用Stream时,不由得感叹真香. 记得以前有朋友聊天说,他在代码中用了 ...
- Code First开发系列实战之使用EF搭建小型博客平台
返回<8天掌握EF的Code First开发>总目录 本篇目录 理解应用需求 数据库设计 创建实体数据模型 创建实体类 创建关系和导航属性 实现DbContext类 执行数据访问 理解仓储 ...
- RocketMQ系列实战
RocketMQ实战(一)RocketMQ实战(二)RocketMQ实战(三):分布式事务RocketMQ实战(四)
- Stream系列(七)distinct方法使用
EmployeeTestCase.java package com.example.demo; import lombok.Data; import lombok.ToString; import l ...
- Stream系列(六)Match方法使用
条件比配 视频讲解 https://www.bilibili.com/video/av77403655/ EmployeeTestCase.java package com.example.demo; ...
- Stream系列(五)Min Max Average方法使用
最小值,最大值,平均值 EmployeeTestCase.java package com.example.demo; import lombok.Data; import lombok.ToStri ...
随机推荐
- 【Github资源大汇总】 - 王朋
1.Github-iOS备忘 (国人总结的上百个Github上的开发框架和完整App) http://github.ibireme.com/github/list/ios/ 2.不少优秀的 iOS, ...
- 自定义带图片和文字的Button的排版--陈棚
自定义button,动态加载图片与文字 [footView addSubview:btnAllChoose]; [btnAllChoose setTitle:str forState:UIContro ...
- 2022寒假集训day5
day5 五道栈的题加上字符串. 单调队列. T1 表达式括号匹配 洛谷P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@&q ...
- PostgreSQL删除数据库失败处理
PostgreSQL Drop DATABASE删除数据库失败,需要结束掉占用的连接 登录PostgreSQL后,执行: SELECT pg_terminate_backend(pg_stat_act ...
- Ubuntu下pip3的安装、升级、卸载
1.安装 sudo apt-get install python3-pip 2.升级 sudo pip3 install --upgrade pip 3.卸载 sudo apt-get remove ...
- Solution -「SP 6779」GSS7
\(\mathcal{Description}\) 给定一棵 \(n\) 个点的带点权树,\(q\) 次操作: 路径点权赋值. 询问路径最大子段和(可以为空). \(n,q\le10^5\). ...
- c++ TextQuery程序
TextQuery程序 我写的第一个版本 返回的是map<size_t, string>这个数据量很大,效率低下. TextQuery.h #inlucde<vector> # ...
- 6.Flink实时项目之业务数据分流
在上一篇文章中,我们已经获取到了业务数据的输出流,分别是dim层维度数据的输出流,及dwd层事实数据的输出流,接下来我们要做的就是把这些输出流分别再流向对应的数据介质中,dim层流向hbase中,dw ...
- 【Python自动化Excel】pandas处理Excel的“分分合合”
话说Excel数据表,分久必合.合久必分.Excel数据表的"分"与"合"是日常办公中常见的操作.手动操作并不困难,但数据量大了之后,重复性操作往往会令人崩溃. ...
- 轻量级DI框架Guice使用详解
背景 在日常写一些小工具或者小项目的时候,有依赖管理和依赖注入的需求,但是Spring(Boot)体系作为DI框架过于重量级,于是需要调研一款微型的DI框架.Guice是Google出品的一款轻量级的 ...