在C#中将二进制数据写入标准输出?

8

我正在尝试用C#编写一个快速的CGI应用程序。我需要访问标准输出流并写入一些二进制数据。我能找到的唯一方法是使用Console.Write,但它只接受文本。我也尝试过

Process.GetCurrentProcess().StandardOutput.BaseStream.Write 

这也不起作用。这真的可能吗?


StandardOutput.BaseStream = 用于读取应用程序输出的流,不适用于您的情况。 - o.k.w
2个回答

18

哇,五年内没有人回答这个问题真是太糟糕了。已浏览1800次。

自 .Net 4.0 以来就存在OpenStandardOutput()方法。

using (Stream myOutStream = Console.OpenStandardOutput())
{
    myOutStream.Write(buf, 0, buf.Length);
}

使用.NET 7的异步版本await stdout.WriteAsync( buf ); - Ben Longo

2

以下是类似于以下内容(在记事本中快速编写的示例):

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class MyObject {
    public int n1 = 0;
    public int n2 = 0;
    public String str = null;
}

public class Example
{
    public static void Main()
    {
        MyObject obj = new MyObject();
        obj.n1 = 1;
        obj.n2 = 24;
        obj.str = "Some String";
        BinaryFormatter formatter = new BinaryFormatter();

        StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
        sw.AutoFlush = true;
        Console.SetOut(sw);

        formatter.Serialize(sw.BaseStream, obj);
    }
}

1
你可能会对LINQPad感兴趣。它是一个非常棒的小工具,可以快速编写和测试代码片段。 - Winston Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接