【问题标题】:Use FileStream Like StreamWriter (Write, WriteLine)像 StreamWriter 一样使用 FileStream (Write, WriteLine)
【发布时间】:2019-05-05 03:25:08
【问题描述】:

我想使用FileStream 而不是StreamWriter,因为FileStream.Flush(true) 女巫将流上的缓存数据写入磁盘,但是当我将StreamWriter 更改为FileStream 时,我的中有很多错误代码,因为FileStream没有.Write().WriteLine()方法

如何使用FileStreamLike StreamWriter?我想在FileStream 上致电.WriteLine(string _),但它不存在。有没有办法添加这个方法?

【问题讨论】:

  • 使用StreamWriter(Stream) constructor。它可以让你传递你喜欢的 FileStream。
  • @HansPassant:那我必须在 StreamWriter 上调用 Flush(),在 FileStream 上调用 Flush(true),对吗?
  • 不,FileStream.Flush(bool) 比较特殊,StreamWriter 不用。您可以在将 StreamWriter 的 AutoFlush 设置为 true 或自己调用 Flush 之间进行选择。
  • 它没有,elgonzo 的评论具有误导性。
  • 哦,该死的。汉斯是对的。我忽略了您专门询问了Flush(true)。调用Flush() 相当于调用Flush(false)

标签: c# filestream flush


【解决方案1】:

extension 这样的方法是可能的

    using System.IO;
    ...
    public static class MyExtensionClass
    {
        public static void Write(this FileStream fs, object value)
        {
            byte[] info = new UTF8Encoding(true).GetBytes(value + "");
            fs.Write(info, 0, info.Length);
        }
        public static void WriteLine(this FileStream fs, object value = null)
        {
            fs.Write(value + "\r\n");
        }
    }

【讨论】:

  • 如果函数退出后这个 byte[] 数组是干净的?我很怀疑,因为有一个“新”关键字