- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如果这个问题对于你们这些经验丰富的程序员来说可能听起来有点业余,让我首先道歉,问题是我在工作中一直有很多关于这个的争论所以我真的想弄清楚这个问题,这就是为什么我我依靠 stackoverflow 社区一劳永逸地解决这个问题 :)
因此,一方面,根据 MSDN,我们有:
TextWriter Class
Represents a writer that can write a sequential series of characters. This class is abstract.
FileStream Class
Exposes a Stream around a file, supporting both synchronous and asynchronous read and write operations.
StreamWriter Class
Implements a TextWriter for writing characters to a stream in a particular encoding.
另一方面,很明显它们都属于 System.IO,但考虑到 MSDN 示例混合了其中的一些示例,我仍然没有达到非常想要的 a-ha 时刻。
如有任何意见,我们将不胜感激,在此先致谢!
最佳答案
流处理字节,写入器处理字符。
字节 != 字符。一个字符可能需要多个字节来表示。从字符到字节的映射称为编码。
FileStream
指的是写入文件的字节,类似于 MemoryStream
指的是写入内存缓冲区的字节。为了将字符写入流,您需要将它们转换为字节串。这就是 StreamWriter
发挥作用的地方。它采用字符序列和编码,并将其转换为字节序列。
TextWriter
是所有 Writers 都必须遵守的接口(interface)(好吧,抽象基类)。它具有基于字符的所有操作。字节的等效项是 Stream
抽象基类。
事情也朝着相反的方向发展。有一个 TextReader
抽象基类,描述如何从某处读取字符,还有一个 StreamReader
,它允许您从提供编码的面向字节的流中读取字符 -但这次反过来使用,在适当的地方将任何多字节序列聚合成单个字符。
Stream
可用于读取和写入,因为字节是 I/O 操作中使用的最低级别的项目。
关于c# - IO 101 : Which are the main differences between TextWriter, FileStream 和 StreamWriter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010555/
我正在尝试将文本写入我的 txt 文件。第一次写应用程序崩溃并报错后 Cannot write to a closed TextWriter 我的列表包含浏览器打开的链接,我想将它们全部保存在 txt
我正在使用 CsvHelper,它使用 TextWriter 来写入其输出。我不想写入文件,而是想将内容写入控制台。如何获得将写入控制台的 TextWriter? 最佳答案 使用 Console.Ou
我已经编写了一个服务,它有一个单独的线程运行,它从数据库中读取大约 400 条记录并将它们序列化为 xml 文件。它运行良好,没有错误,它报告所有文件都已正确导出,但之后只出现少数 xml 文件,而且
using (TextWriter writer = File.CreateText(path2)) {
好吧,我正在使用 ILSpy 进行巡查,并试图弄清楚这里发生了什么,但我运气不太好。 在使用 Razor 引擎的 ASP.NET MVC4 应用程序中的给定 View 中(但这当然适用于 MVC3,可
我正在尝试实现一个将一些 ActiveDirectory 信息显示到网页上的功能,但是当我出于某种原因尝试显示某些信息(用户的经理)时,它开始向我抛出以下错误,但它没有完成那在过去。任何人都可以解释这
这段代码应该是不言自明的: XDocument xd = .... using (FileStream fs = new FileStream("test.txt", FileMode.Open, F
alt text http://img179.imageshack.us/img179/7827/textwriter.jpg tf.txt 文件有 0 个字节,当在循环中多次调用此方法时,我得到:
我正在编写一个将数据导出到 CSV 文件的类,它的构造函数接受一个 TextWriter。我使用 TextWriter 而不是 StreamWriter 的原因是这样可以使测试更容易:我可以使用相同的
我有两个类,我不能以任何方式更改它们中的任何一个: 第 1 类:采用 TextWriter 作为构造函数参数并将其用作输出流。 类2:提供方法WriteLine(string)。 我需要一个适配器,以
我有 xml,我在另一个 resurse 中通过 API 发送了它。我通过 XDocument 创建它: XDocument xDoc = new XDocument( new XDeclar
我写了一个接受 TextWriter 的方法作为参数(通常是 Console.Out,但不一定)。 当我调用此方法时,一些进度信息将写入 TextWriter。 但是,由于此方法可以运行很长时间,因此
如何使用 TextWriter 对象清除文本文件的所有数据? mt文件名为:user_name.txt 谢谢。 最佳答案 FileMode.Truncate 将从文件中删除所有文本,然后打开文件进行写
我正在使用 textwriter 将数据写入文本文件,但如果该行超过 1024 个字符,则会插入一个换行符,这对我来说是个问题。关于如何解决这个问题或增加字符数限制的任何建议? textWriter.
关于防止“已在使用”错误,我想问一下,如果从多个客户端多次调用,第一个代码片段是否可能存在危险?还是两个代码块都同样安全? 我问是因为第二个代码片段调用了一个 close 方法,该方法也进行了一个听起
对于像增量捕获文本这样的情况,例如,如果您在呈现页面时收到所有 output.write 调用,并且这些调用通过 stringbuilder 附加到文本编写器中。 有没有更有效的方法来做到这一点?最好
我正在编写一个 xml 文件,但缺少特定字段的某些值。我检查当对象出现时包含特定值存在的值,但是在编写 xml 之后该值不存在。 这是我使用的代码,我认为 XmlTextWriter 可能是错误的 x
有没有办法使用 HtmlTextWriter 创建它?我正在尝试创建一种在服务器端动态创建 html 的方法 这是代码的开始我不确定如何创建“data-theme”属性,因为没有为此提供的枚举..
正在苦苦思索如何将 2 个字符串一起加密。 因为我实时添加位和位字符串(通过 str = str + bitString;)并在最后。我生成字符串并将其加密。 现在的问题是我可以像textwriter
我从我的 C# 代码调用一个 API,该代码的方法带有以下 header public void ExternalFactory.SetOut(TextWriter outputStream) 我通
我是一名优秀的程序员,十分优秀!