确定 C# 应用程序中的重定向控制台输入
控制台应用程序严重依赖输入/输出操作。 然而,这种输入的来源——无论是键盘还是重定向流(如文件)——都可以极大地改变应用程序的行为。 本文演示了如何在 C# 中有效检测重定向的控制台输入。
检查重定向
最直接的方法是使用 FileType()
函数。 辅助类简化了此检查:
<code class="language-csharp">public static class ConsoleHelper { public static bool IsInputRedirected() { return FileType.Char != GetFileType(GetStdHandle(StdHandle.Stdin)); } }</code>
实施
要使用助手,只需调用:
<code class="language-csharp">bool isRedirected = ConsoleHelper.IsInputRedirected();</code>
true
结果表示输入来自键盘以外的源(例如文件)。
底层原生方法
帮助程序利用这些 Win32 API 函数:
FileType
:枚举文件类型(未知、磁盘、字符、管道)。StdHandle
:代表标准句柄(Stdin、Stdout、Stderr)。GetFileType
:检索给定句柄的类型。GetStdHandle
:获取标准设备的句柄。.NET 4.5 及更高版本的简化
.NET Framework 4.5及更高版本提供了内置的、更简洁的方法:
<code class="language-csharp">bool isRedirected = Console.IsInputRedirected;</code>
这会直接返回一个布尔值,指示重定向状态。
通过采用这些技术,开发人员可以构建强大的控制台应用程序,根据输入源调整其功能,从而增强用户体验和应用程序灵活性。
以上是如何在 C# 中检测重定向的控制台输入?的详细内容。更多信息请关注PHP中文网其他相关文章!