using System; using System.Diagnostics; using System.IO; public class StandardInputTest { public static void Main() { Process p2=new Process(); p2.StartInfo.FileName="test1.exe"; p2.StartInfo.UseShellExecute=false; p2.StartInfo.RedirectStandardInput=true; p2.StartInfo.RedirectStandardOutput=true; p2.Start(); StreamWriter input = p2.StandardInput; input.WriteLine("How Are You."); input.Close(); StreamReader output = p2.StandardOutput; Console.WriteLine(output.ReadToEnd()); } }//付:test1.cs //请编译 csc /out:test1.exe test1.cs using System; class testcs { public static void Main () { String str = Console.ReadLine(); Console.WriteLine(str); } }
StreamWriter input = p2.StandardInput; StreamReader sr = new StreamReader("yourfile"); String str; while ((str = sr.ReadLine()) != null) { input.WriteLine(str); } input.Close(); sr.Close();
using System.Diagnostics;
using System.IO;
public class StandardInputTest
{
public static void Main()
{
Process p2=new Process();
p2.StartInfo.FileName="test1.exe";
p2.StartInfo.UseShellExecute=false;
p2.StartInfo.RedirectStandardInput=true;
p2.StartInfo.RedirectStandardOutput=true;
p2.Start();
StreamWriter input = p2.StandardInput;
input.WriteLine("How Are You.");
input.Close();
StreamReader output = p2.StandardOutput;
Console.WriteLine(output.ReadToEnd());
}
}//付:test1.cs
//请编译 csc /out:test1.exe test1.cs
using System;
class testcs
{
public static void Main ()
{
String str = Console.ReadLine();
Console.WriteLine(str);
}
}
StreamReader sr = new StreamReader("yourfile");
String str;
while ((str = sr.ReadLine()) != null) {
input.WriteLine(str);
}
input.Close();
sr.Close();
StreamWriter input = execute.StandardInput;
StreamWriter fileout = File.CreateText(@"d:\csworking\out.txt");
StreamReader output = execute.StandardOutput;
StreamReader filein = File.OpenText(@"d:\csworking\in.txt");
execute.StartInfo.FileName = @"d:\csworking\t";
execute.StartInfo.CreateNoWindow = true;
execute.StartInfo.RedirectStandardInput = true;
execute.StartInfo.RedirectStandardOutput = true;
execute.StartInfo.UseShellExecute = false;
string str;
while((str = filein.ReadLine()) != null)
{
input.WriteLine(str);
}
execute.Start();
execute.WaitForExit();
while((str = output.ReadLine())!=null)
{
fileout.WriteLine(str);
}
filein.Close();
fileout.Close();
input.Close();
output.Close();
}
using System.Diagnostics;
using System.IO;
using System.Text;class test
{
public static void Main ()
{
Process execute = new Process();
execute.StartInfo.FileName = @"test1.exe";
execute.StartInfo.CreateNoWindow = true;
execute.StartInfo.UseShellExecute = false;
execute.StartInfo.RedirectStandardInput = true;
execute.StartInfo.RedirectStandardOutput = true; execute.Start();
StreamWriter input = execute.StandardInput;
StreamWriter fileout = File.CreateText(@"out.txt");
StreamReader output = execute.StandardOutput;
StreamReader filein = File.OpenText(@"in.txt");
string str;
while((str = filein.ReadLine()) != null)
{
input.WriteLine(str);
}
filein.Close();
input.Close();
execute.WaitForExit();
while((str = output.ReadLine())!=null)
{
fileout.WriteLine(str);
}
fileout.Close();
output.Close();
}
}如果要支持中文就用:
StreamWriter input = execute.StandardInput;
StreamWriter fileout = new StreamWriter(@"out.txt", false, Encoding.GetEncoding("gb2312"));
StreamReader output = execute.StandardOutput;
StreamReader filein = new StreamReader(@"test.txt", Encoding.GetEncoding("gb2312"));
2.对这些属性的操作就更要在它启动之后了;
3.StreamWriter如果不刷新,数据都在缓冲区,并没有真正写入流内,当调用Flush时才会写入流。而Close方法同时调用了Flush。但是你的程序调用Close方法错了,必须先结束输入流,才可能产生输出流,这时才读输出流。而你的是先读输出流,在结束输入流,所以就没有数据。