我正在尝试用C#编写一个快速的CGI应用程序。我需要访问标准输出流并写入一些二进制数据。我能找到的唯一方法是使用Console.Write,但它只接受文本。我也尝试过
Process.GetCurrentProcess().StandardOutput.BaseStream.Write
这也不起作用。这真的可能吗?
哇,五年内没有人回答这个问题真是太糟糕了。已浏览1800次。
自 .Net 4.0 以来就存在OpenStandardOutput()方法。
using (Stream myOutStream = Console.OpenStandardOutput())
{
myOutStream.Write(buf, 0, buf.Length);
}
await stdout.WriteAsync( buf );
- Ben Longo以下是类似于以下内容(在记事本中快速编写的示例):
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);
}
}