CStreamReader类和StreamWriter类
以下文章来源于Dotnet讲堂 ,作者Dotnet讲堂
Dotnet讲堂 .
这里是Dotnet编程的乐园,如果你对C# Winfom感兴趣,你想学习wpf编写酷炫的界面通过mvvm模式实现前后端解耦,你热衷于智能制造、工控上位机,资深高工带你入坑。
先看看 StreamReader,将前面的示例转换为读取文件以使用 StreamReader。它现在看起来容易得多。StreamReader 的构造函数接收FileStream。使用 EndOfStream 属性可以检查文件的末尾,使用ReadLine 方法读取文本行: public static void ReadFileUsingReader(string fileName) { var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); using (var reader = new StreamReader(stream)) { while (!reader.EndofStream) { string line = reader.ReadLine(); Console.WriteLine(line); } } }
不再需要处理字节数组和编码。然而注意,StreamReader 默认使用 UTF-8 编码。指定另一个构造函数,可以让 StreamReader 使用文件中序言定义的编码: var reader = new StreamReader(stream, detectEncodingFromByteOrderMarks: true);
也可以显式地指定编码: var reader = new StreamReader(stream, Encoding.Unicode);
其他构造函数允许设置要使用的缓冲区;默认为 1024 个字节。此外,还可以指定关闭读取器时不应该关闭底层流。默认情况下,关闭读取器时(使用 Dispose 方法),会关闭底层流。
不显式实例化新的 StreamReader,而可以使用 File 类的 OpenText 方法创建StreamReader: var reader = File.OpenText(fileName);
对于读取文件的代码片段,该文件使用 ReadLine 方法逐行读取。StreamReader还允许在流中使用 ReadToEnd 从光标的位置读取完整的文件: string content = reader.ReadToEnd();
StreamReader 还允许把内容读入一个字符数组。这类似于 Stream 类的 Read 方法;它不读入字节数组,而是读入 char 数组。记住,char 类型使用两个字节。这适合于 16 位 Unicode,但不适合于 UTF-8,其中,一个字符的长度可以是 1 至 6 个字节: int nChars = 100; char[] charArray = new char[nChars]; int nCharsRead = reader.Read(charArray, 0, nChars);
StreamWriter 的工作方式与 StreamReader 相同,只是 StreamWriter 仅用于写入文件(或写入另一个流)。下面的代码片段传递 FileStream,创建了一个 StreamWriter。然后把传入的字符串数组写入流:
public static void WritefileUsingWriter(string fileName, string[] lines) { var outputStream = File.OpenWrite(fileName); using (var writer = new StreamWriter(outputStream)) { byte[] preamble = Encoding.UTF8.GetPreamble(); outputStream.Write(preamble, 0, preamble.Length); writer.Write(lines); } }
记住,StreamWriter 默认使用 UTF-8 格式写入文本内容。通过在构造函数中设置 Encoding 对象,可以定义替代的内容。另外,类似于 StreamReader 的构造函数,StreamWriter 允许指定缓冲区的大小,以及关闭写入器时是否不应该关闭底层流。
StreamWriter 的 Write() 方法定义了 17 个重载版本,允许传递字符串和一些 .NET 数据类型。请记住,使用传递 .NET 数据类型的方法,这些都会使用指定的编码变成字符串。
单品主导,市场分散,投影仪市场能撑起年轻人的家庭影院梦想?在当下的电子消费品市场,很少有年增长超过30品类,无论是家电产品还是智能终端类产品,其年增长都在10左右徘徊。然而随着95后00后人群逐渐成为社会的主力消费人群,一些原来看似并不主
比特币和以太坊也能免费领取了!让我一步步教你78000元一枚的比特币,2600元枚的以太坊,现在也能不花钱领取?对的没骗你,以下方法亲测有效。首先科普一下为什么可以领取在比特币出现的早期,大家都不了解它是什么。为了让更多人知
一直玩区块链游戏的都是谁?区块链游戏飞速发展,在这两年也被越来越多玩家所感知。根据DappReview的数据显示,每天仅活跃在以太坊上区块链游戏玩家就有3万5万。那么在我国都是谁在玩区块链游戏呢?近日,De
一款好的区块链游戏需要具备哪些特性?随着区块链技术风靡全球,近两年,区块链行业中讨论最多的便是如何实现区块链应用落。而其中区块链游戏,便是领军之一。开发者将区块链技术的去中心化透明公开不可篡改等特性融入到传统游戏中,
日活下降99,这款名噪一时的区块链游戏是怎么倒下的以太猫,全世界第一款区块链游戏,于2017年年末发布后马上走红,乃至引起全世界交易虚拟小宠物的风潮,较贵的创世猫价钱达到77万RMB,但谁可以想到,如今以太猫的日活跃玩家早已跌到不
区块链游戏开发者需要注意的4种攻击方式(下)在上一篇文章中,我们谈论了2种常见的区块链游戏攻击方式。接下来,我们将继续探讨2种需要区块链游戏开发者高度重视的漏洞。伪随机数漏洞对于区块链游戏开发者而言,无论以太坊还是EOS都存
将区块链技术与游戏结合的作品有哪些值得推荐?说到区块链游戏,大家都了解CryptoKitties是第一款在以太坊平台开发的区块链技术与游戏结合的作品。直至现如今,市场上各种各样区块链技术与游戏融合的作品蓬勃发展,在其中以效仿
区块链游戏开发需要注意什么?区块链游戏作为游戏行业的新贵有着非常快的发展速度,有人说它将给传统游戏行业带来革命性的颠覆。在大家准备入场进行区块链游戏开发的同时,大家也要了解一些开发区块链游戏的注意事项,区块链
比特币79000元枚,用这些办法挖矿却能不花一分钱?比特币飙涨到79000元枚了,同样疯狂的还有涨至2700元枚的以太坊。2008年时,比特币的价格甚至还没有1毛钱,如今已是接近8万元的高价。什么概念?如果当年买入100块比特币,现
亚马逊店铺的转让流程及注意事项今天讨论一个可能很多人会关心的问题。随着旺季的到来,一些大中型的跨境电商公司急需扩展店铺,增加营销渠道。同时也有一些个人卖家,因为个人问题等原因,自己的店铺不做了,但是毕竟辛辛苦苦
RTSTCG游戏逐渐成为区块链游戏市场的主角近年来区块链技术(Blockchain)变成各个行业积极布局的一个全新技术,不但促进自主创新还能产生额外的使用价值。游戏业中选用区块链技术的区块链游戏将成未来发展趋势之一,通过将玩