在开发 C# 控制台应用程序时,我们经常需要与用户交互或处理外部数据。这时候,C#标准输入输出重定向就显得尤为重要。本文将从零开始,详细讲解如何在 C# 中使用命令行重定向技术,帮助你轻松掌握 stdin、stdout 和 stderr 的操作方法。
在操作系统中,每个进程默认都有三个标准流:
stdin(标准输入):通常来自键盘,程序通过它读取用户输入。stdout(标准输出):通常显示在终端上,程序通过它输出正常信息。stderr(标准错误):用于输出错误信息,也默认显示在终端。而命令行重定向就是将这些流指向文件或其他程序,而不是默认的终端设备。例如,把程序的输出保存到文件,或将另一个程序的输出作为当前程序的输入。
在 C# 中,我们可以使用 Console 类来操作标准输入输出:
// 读取标准输入(stdin)string input = Console.ReadLine();// 写入标准输出(stdout)Console.WriteLine("这是正常输出");// 写入标准错误(stderr)Console.Error.WriteLine("这是一个错误信息!"); 假设我们有一个简单的 C# 程序,它读取一行输入并将其转换为大写后输出:
using System;class Program{ static void Main() { string line; while ((line = Console.ReadLine()) != null) { Console.WriteLine(line.ToUpper()); } }} 编译后生成 ToUpperApp.exe。现在我们可以使用命令行重定向:
# 将 input.txt 的内容作为程序输入,并将输出保存到 output.txtecho "hello world" > input.txtToUpperApp.exe < input.txt > output.txt# 查看结果type output.txt # Windows# 或 cat output.txt (Linux/macOS)
这样,我们就实现了 C#控制台应用 的输入输出重定向!
错误信息默认不会被 > 捕获,需要使用 2> 来重定向 stderr:
# 只重定向错误到 error.logMyApp.exe 2> error.log# 同时重定向 stdout 和 stderr 到同一个文件MyApp.exe > output.log 2>&1
有时你可能想知道程序是否运行在交互式终端中,还是被重定向了。可以使用以下方式:
if (Console.IsInputRedirected) Console.WriteLine("输入已被重定向");if (Console.IsOutputRedirected) Console.WriteLine("输出已被重定向"); 通过本文,你已经掌握了 C#标准输入输出重定向 的基本原理和实践方法。无论你是开发数据处理工具、自动化脚本,还是构建管道式应用,理解 stdin stdout stderr 的工作机制都将大大提升你的编程效率。
记住:灵活运用 命令行重定向,能让你的 C#控制台应用 更加强大和通用!
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251211031.html