確定 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中文網其他相關文章!