【转】!C#中的Stream相关

计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件)。图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件,由一些字符的串行组成,具有一定的编码规则。如果你将文本文件通过修改后缀的方式修改成图片,但对于程序来说本质上还是文本文件。

FileStream类——这个类主要用于在二进制文件中读写二进制数据——也可以使用它读写任何文件。 流是传输数据的对象,介于程序中直接与流交互,可以将流理解为数据本身。一个FileStream的实例可以理解为一个具体的文件。

System.IO.MemoryStream类和System.Net.Sockets.NetworkStream类。

继承关系如下图(除NetWorkStream CryptoStream外,其他均在System.IO下):

流,都是写一点多一点。从流中读一点,流就少一点,可以通过方法返回的数据来判断流读到哪了。

在使用完流后记得释放流

  • Dispose(true),关闭基础流,释放 System.IO.StreamReader 使用的非托管资源和托管资源。
  • Dispose(false),关闭基础流,仅释放非托管资源。
  • Close(),关闭 System.IO.StreamReader 对象和基础流,并释放与读取器关联的所有系统资源。允许其他应用程序为同一个文件设置流。这个操作也会刷新缓冲区。
  • 当一个类里面既有Close又有Dispose时,基本这两个函数干的事情是差不多的。

https://referencesource.microsoft.com/#mscorlib/system/io/stream.cs源码

C# 托管资源与非托管资源 - 改变从今天开始 - 博客园​www.cnblogs.com

  • 托管代码:为.NET编写的代码,交由CLR管理(其中包含了GC服务)
  • 非托管代码:不在CLR控制下运行的代码。比如Win32 C/C++ DLL

FileStream使用举例

FileStream读取

FileStream写入


StreamReader(流读取器)StreamWriter(流写入器)——这两个类可以对文本文件应用程序进行读写;文本文件有不同的编码格式,StreamReader会帮我们自动处理,你也可以指定编码格式去读写流。除此之外,还能对应用程序进行标准的输入输出,常见于对Process输入输出;可以将这读取器或写入器理解为单向的管道,给予我们读写的能力。这两种管道也是专门处理流的。而管道是建立在流的基础之上的。可以通过参数:路径字符串,已有文件流构件管道,还可以通过FileInfo的实例的CreateText()方法来构建管道。

与流相同的是:管道也要CloseDispose,只有Dispose(false)是只关管道,不关流。

StreamReader源码

StreamReader示例

StreamWriter示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音频帧AVFrame::linesize大于实际值的问题记录

在解析AAC的音频流时,发现AVFrame::linesize[0]大小为8192。 但是AVFrame::nb_samples为1024,AVFrame::format类型为AV_SAMPLE_FMT_FLTP,即每个采样是4字节。 那么此音频帧中的数据应该为4096,和AVFrame::linesize[0]不相等。 …

vscode生成vue模板快捷键_vs code 快速生成vue 模板

1.使用快捷Ctrl Shift P唤出控制台,然后输入snippets并选择。(或 文件>首选项>用户代码片断里面,输入 vue.json ,然后回车 )(或 file > Preferences > User Snippets,然后回车)2.接着输入vue,选择vue-ht…

【转】!!c#文件系统操作类继承关系图

自己总结的,给大家参考一下,

FFmpeg资料

ffmpeg内存模型及AVPacket和AVFrame API解释

php elasticsearch 获取索引所有文档_Elasticsearch客户端主要方法的使用规则

安装1.在 composer.json 文件中引入 elasticsearch-php:{ "require": { "elasticsearch/elasticsearch": "~6.0" }}2.用 composer 安装客户端:curl -s http://getcomposer.org/installer | phpphp composer.…

【转】如何用好SVN的Branch

转自: http://www.cnblogs.com/lovebanyi/archive/2012/06/13/2547525.html 在SVN里面我们一般会创建出三个文件夹 Trunk(主干) Branch(分支) TAG(标签) 在我们项目一开始的时候我们会将代码…

python数据爬取并可视化_Python爬取数据并实现可视化代码解析

这次主要是爬了京东上一双鞋的相关评论:将数据保存到excel中并可视化展示相应的信息主要的python代码如下:文件1#将excel中的数据进行读取分析import openpyxlimport matplotlib.pyplot as pit #数据统计用的wkopenpyxl.load_workbook(销售数据.xlsx)she…

【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

转自:https://monday.blog.csdn.net/article/details/51122637 一:使用场景: 假如你的项目(这里指的是手机客户端项目)的某个版本(例如1.0版本)已经完成开发、测试并已经上线了,接…

纠正一个可能的错误翻译—交叉编译

交叉编译,是英文 Cross Compilation 的中文翻译。 下面摘自百度: 交叉编译是在一个平台上生成另一个平台上的可执行代码。 由于嵌入式设备的性能局限,往往不能通过本机编译得到所需软件的可执行程序。因此,以Linux为主机操作系统…

jar 退出run_Java终止线程的三种方式

停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作,也就是放弃当前的操作。在 Java 中有以下 3 种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程中止。使用 stop() 方法强…

【转】人工智能教程-前言

前言 大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科幻电影中的场景将成为现实,未来已来! 我很庆幸。十四年前就认定了人工智能专业&…

golang 包含 数组_Golang数组类型

数组数组是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。1. 声明方法[32]byte //长度为32的数组[2*N] struct {x, y int32} //复杂类型数组[100]*float64 //指针数组[3][5]int //二维数组[2]…

【转】人工智能-1.1.1 什么是神经网络

1.1.1 什么是神经网络 什么是人工智能?通俗来讲,就是让机器能像人一样思考。这个无需解释太多,因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能? 从1956年夏季首次提出“人工智能…

【V4L2】学习资料

预备知识 V4L2,即Linux视频设备内核驱动。 参考文章 v4l2的学习建议和流程解析Linux V4L2学习高通msm-V4L2-Camera驱动浅析5-buffer00_video_decode (video decode):此内容为英伟达Jetson的Demo文档手册,有条件的可以结合Jetson的代码阅读…

解决margin塌陷的问题_解决margin塌陷与margin合并(margin)清除浮动问题

**1、margin塌陷**问题:垂直方向的父子关系的盒子使用不当会产生margin塌陷。给子级设置margin-top时,他不会相对父级一起动,只有他的margin超过父级的margin时,才会生效,但会带着父级一起动(作者总结,官方…

【转】人工智能-1.2.2 神经网络是如何进行预测的

上一篇文章中我们已经知道了如何将数据输入到神经网络中。那么神经网络是如何根据这些数据进行预测的呢?我们将一张图片输入到神经网络中,神经网络是如何预测这张图中是否有猫的呢?? 这个预测的过程其实只是基于一个简单的公式&a…

js 根据公历日期 算出农历_一招教会你公历换算成农历,要不要试试看

古代的历法是干支纪年,俗称农历或阴历,现在我们都统一采用公历的阿拉伯数字纪年。因此,就存在着一个历法的换算问题。当然,我们可以查历书就直接知道了,但是这个方法并不一定方便。现在告诉大家一个简单的口诀&#xf…

【转】C# HMAC Sha1 生成签字

最近因为工作的需要,开始接触腾讯云,在调用CMQ服务时发现官方提供的SDK只有基于.Net Framework的,而现在做.net项目的谁不是用.net core啊。好吧,既然没有官方的SDK,只能自己写服务来调用Api了。遇到的第一个麻烦点的事…

去哪查阅RFC文档?

什么是RFC文档 RFC。 Request For Comments(RFC),是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。目前RFC文件是由Internet Society(ISOC)赞助发行。基本的互联…