[C#]使用Process的StandardInput与StandardOutput写入读取控制台数据
2017-12-11 09:55
826 查看
本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢!
开发工具:VS2017
语言:C#
DotNet版本:.Net FrameWork 4.0及以上
一、为了演示使用程序读取控制台数据,现在需要编写一个控制台程序,代码如下:
这段代码的作用是:
1)在控制台输出“Hello World!”;
2)当输出“Test”(不管大小写),则输出:
You have type correctly.
Congratulation!
3)当输出其他时,则输出:
Sorry,Uncorrectly!
See you later.
以上是必备的应用程序,如果不使用该程序,可以使用System32文件夹下的cmd.exe来当做控制台应用程序;
二、将以上生成的程序Test.exe拷贝到D盘根目录下;
三、新建一个控制台应用程序(MainConsoleApp),来操作之前的控制台应用程序,并编写以下代码:
代码作用简介:
ProcessStartInfo.FileName:要启动的应用程序名称;
ProcessStartInfo.UseShellExecute:要重定向 IO流,Process对象必须将 UseShellExecute属性设置为false;
ProcessStartInfo.CreateNoWindow:是否以没有窗体的模式创建应用程序,默认为false,即有窗体,如为true,即隐藏窗体。在这里不设置该值也可以;
ProcessStartInfo.RedirectStandardInput:标准输入流的重定向,重定向至Process,我们可以通过Process.StandardInput.WriteLine将数据写入标准流;
ProcessStartInfo.RedirectStandardOutput:与RedirectStandardInput相反,这是标准输出流的重定向,我们可以通过Process.RedirectStandardOutput.ReadLine等方法读取标准流数据。
Process.StandardInput.WriteLine:将数据写入标准流;
Process.StandardOutput.ReadLine(或ReadToEnd):从标准流读取数据。
四、该程序将向Test.exe写入数据,并从Test.exe读回数据,这里使用了重定向技术,运行结果如下:
我们可以看到,原来是Test.exe的程序,所有的数据操作都进行了重定向,直接在MainConsoleApp.exe进行了输入输出。
这个技术不仅仅可以用于以上的示例,还可以用于其他具有控制台输入输出的程序,如cmd.exe,这里不进行举例,自己进行试验即可。
我的博客即将同步至腾讯云+社区,邀请大家一同入驻。
开发工具:VS2017
语言:C#
DotNet版本:.Net FrameWork 4.0及以上
一、为了演示使用程序读取控制台数据,现在需要编写一个控制台程序,代码如下:
using System; namespace Test { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); string content = Console.ReadLine(); if(content.ToUpper() == "TEST") { Console.WriteLine("You have type correctly.\r\nCongratulation!"); } else { Console.WriteLine("Sorry,Uncorrectly!\r\nSee you later."); } } } }
这段代码的作用是:
1)在控制台输出“Hello World!”;
2)当输出“Test”(不管大小写),则输出:
You have type correctly.
Congratulation!
3)当输出其他时,则输出:
Sorry,Uncorrectly!
See you later.
以上是必备的应用程序,如果不使用该程序,可以使用System32文件夹下的cmd.exe来当做控制台应用程序;
二、将以上生成的程序Test.exe拷贝到D盘根目录下;
三、新建一个控制台应用程序(MainConsoleApp),来操作之前的控制台应用程序,并编写以下代码:
using System; using System.Diagnostics; namespace MainConsoleApp { class Program { static void Main(string[] args) { Process proc = new Process { StartInfo = new ProcessStartInfo { FileName = @"D:\test.exe", UseShellExecute = false, CreateNoWindow = true, RedirectStandardInput = true, RedirectStandardOutput = true } }; proc.Start(); proc.StandardInput.WriteLine("Test"); string line = null; while (!proc.StandardOutput.EndOfStream) { line += proc.StandardOutput.ReadLine() + Environment.NewLine; } Console.WriteLine(line); proc.WaitForExit(); //再次启动 proc.Start(); proc.StandardInput.WriteLine("T"); string content = proc.StandardOutput.ReadToEnd(); Console.WriteLine(content); proc.WaitForExit(); Console.ReadKey(); } } }
代码作用简介:
ProcessStartInfo.FileName:要启动的应用程序名称;
ProcessStartInfo.UseShellExecute:要重定向 IO流,Process对象必须将 UseShellExecute属性设置为false;
ProcessStartInfo.CreateNoWindow:是否以没有窗体的模式创建应用程序,默认为false,即有窗体,如为true,即隐藏窗体。在这里不设置该值也可以;
ProcessStartInfo.RedirectStandardInput:标准输入流的重定向,重定向至Process,我们可以通过Process.StandardInput.WriteLine将数据写入标准流;
ProcessStartInfo.RedirectStandardOutput:与RedirectStandardInput相反,这是标准输出流的重定向,我们可以通过Process.RedirectStandardOutput.ReadLine等方法读取标准流数据。
Process.StandardInput.WriteLine:将数据写入标准流;
Process.StandardOutput.ReadLine(或ReadToEnd):从标准流读取数据。
四、该程序将向Test.exe写入数据,并从Test.exe读回数据,这里使用了重定向技术,运行结果如下:
我们可以看到,原来是Test.exe的程序,所有的数据操作都进行了重定向,直接在MainConsoleApp.exe进行了输入输出。
这个技术不仅仅可以用于以上的示例,还可以用于其他具有控制台输入输出的程序,如cmd.exe,这里不进行举例,自己进行试验即可。
我的博客即将同步至腾讯云+社区,邀请大家一同入驻。
相关文章推荐
- 如何使用C#和ADO.NET在SQL Server数据库读取和写入blob数据
- C# Python 读取txt中的文件,将16进制的数据按照小端方式排列,处理为有符号的数字,并写入text文件;控制台和界面两种方式
- c#写入注册表,读取注册表。使用二进制数据
- 使用C#写入并保存为*.txt和读取数据
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- Linux下C语言实现的简单使用线程向FIFO里写入与读取数据的例子
- 使用C#向Excel文档写入数据
- 如何使用c#读取Excel数据?
- 使用C#读取Word表格数据
- C#使用sql语句读取excel文件数据
- (转)如何利用书签向word文档读取或写入数据[C#]
- cell中遍历读取数据并写入数据库(c#)
- C# 使用WINAPI 进行读取写入配置文件
- 使用C#进行基于PI的开发(三)——应用PISDK和PIAPI从PI数据库读取数据
- Oracle 写入和读取blob类型的数据(C#)
- C#不使用DataSet操作XML,XmlDocument读写xml所有节点及读取xml节点的数据总结
- 用DataReader从Oracle10g数据库中读取数据(c#) vs2008控制台程序
- 使用VSIUAL C#.NET操作Excel -把DataTable中的数据写入Excel
- 使用VSIUAL C#.NET操作Excel -把DataTable中的数据写入Excel
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中