当前位置:首页 > C# > 正文

C#标准输入输出重定向详解(命令行重定向在C#控制台应用中的实战指南)

在开发 C# 控制台应用程序时,我们经常需要与用户交互或处理外部数据。这时候,C#标准输入输出重定向就显得尤为重要。本文将从零开始,详细讲解如何在 C# 中使用命令行重定向技术,帮助你轻松掌握 stdin、stdout 和 stderr 的操作方法。

什么是标准输入输出重定向?

在操作系统中,每个进程默认都有三个标准流:

  • stdin(标准输入):通常来自键盘,程序通过它读取用户输入。
  • stdout(标准输出):通常显示在终端上,程序通过它输出正常信息。
  • stderr(标准错误):用于输出错误信息,也默认显示在终端。

命令行重定向就是将这些流指向文件或其他程序,而不是默认的终端设备。例如,把程序的输出保存到文件,或将另一个程序的输出作为当前程序的输入。

C#标准输入输出重定向详解(命令行重定向在C#控制台应用中的实战指南) C#标准输入输出重定向 命令行重定向 C#控制台应用 stdin stdout stderr 第1张

C# 中如何读写标准流?

在 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#控制台应用 更加强大和通用!