【发布时间】:2014-12-19 11:24:52
【问题描述】:
我有点困惑。我一直在查看上述问题的先前答案,但没有一个对我真正有用,所以我不确定我做错了什么。
我有一个简单的 c# 控制台应用程序:(outputsomething.exe)
static void Main(string[] args) {
Console.Out.Write("This is a test");
}
另一个从上面的代码中获取一些参数和管道输入,如下所示: dostuffwithinput.exe 一些参数 |outputsomething.exe
第一个问题是我无法弄清楚如何“读取”管道输入,正如我在上面所说的那样,现有的答案都不适合我,从 stdin (Console.In) 读取只是没有捕获任何内容。
其次,在输入某些内容后,我无法再将任何内容写入 stdout (Console.Out)。
我的代码非常简单,它只是将 args 连同一些控制台属性一起写到一个文件中,并尝试从 Console.In 中读取 - 它确实如此,但它只读取我输入的输入。
但是对于管道输入,它永远无法捕获管道输入的内容,并且最后的输出永远不会发送到控制台。
static void Main(string[] args) {
bool ior = Console.IsInputRedirected;
bool keyavail = Console.KeyAvailable;
char[] chrs = new char[4];
int chr = Console.In.ReadBlock(chrs, 0, 4);
using (StreamWriter stream = new StreamWriter("fred.txt")) {
foreach (var arg in args) {
stream.WriteLine(arg);
Console.WriteLine(arg);
}
stream.WriteLine("input = " + new string(chrs));
stream.WriteLine("io redirectirected = " + ior);
stream.WriteLine("is key available = " + keyavail);
}
Console.WriteLine("fin");
Console.Out.Flush();
}
(我也遇到了这个一堆废话编辑器的严重问题,它一直显示关于缩进的红色警告,我必须删除很多示例才能以可发送的形式获得它!)
我做错了什么? (这是在 Windows 10/9879 上)
TIA
【问题讨论】: