我试图了解不同的阅读和编写文件的方式及其优点和缺点。喜欢何时在File.Create或StreamReader / StreamWriter时使用TextWriter / TextReader FileStream等。
何时使用?
答案 0 :(得分:7)
File.*
静态方法只是构建新FileStream
s,FileWriter
等的简单方法。它们非常有用 - 我通常使用File。*而不是显式调用构造函数,除非我需要一些没有照顾的行为。
主要的关键点是:
Stream
TextWriter
/ TextReader
如果您开始尝试使用TextReader
读取二进制数据,则会发生错误。
答案 1 :(得分:5)
Stream是一个抽象类,表示 bytes 的序列。
TextReader / TextWriter是抽象类,可让您读/写字符。
File.*
静态方法只是简化FileStream创建的便捷方法。
答案 2 :(得分:3)
我肯定没有关于这个主题的专家,但我只想指出TextReader
和TextWriter
是许多其他类使用的基类(我相信是抽象的)用于处理不同类型的I / O.当您实际处理包含文本的StreamReader
个对象时,应使用StreamWriter
和Stream
,例如文本文件的FileStream
。但是TextReader
不一定需要处理流;以StringReader
类为例,它也继承自TextReader
并只读取一个简单的字符串。
答案 3 :(得分:1)
每个进程使用的基本机制是相同的,因此没有一个比另一个“更好”。
不同之处在于执行某些任务的难易程度。例如,File.CreateText返回一个StreamWriter,它在功能上与手动创建StreamWriter并使用它写入文件没什么不同。它只需要更少的代码。 (我认为它是一种捷径)。
答案 4 :(得分:1)
不要忘记静态辅助方法System.IO.File.WriteAllByte(...)
,.WriteAllText(...)
.WriteAllLines(...)
及其相应的.ReadAllByte(...)
,.ReadAllText(...)
和.ReadAllLines(...)
方法。如果我没有任何理由捣乱我使用它们,因为它们是快速的getter / putter文件IO方法。