2010-09-30 6 views
4

J'appelle le processus Java de l'application .NET et je dois rediriger la sortie de la console vers System.String pour effectuer une analyse ultérieure. Veuillez nous conseiller J'apprécierais un exemple de code court.Comment rediriger la sortie du processus vers System.String

public bool RunJava(string fileName) 
{ 
    try 
    { 
     ProcessStartInfo psi = new ProcessStartInfo(); 
     psi.CreateNoWindow = true; 
     psi.UseShellExecute = false; 
     psi.EnvironmentVariables.Add("VARIABLE1", "1"); 
     psi.FileName = "JAVA.exe"; 
     psi.Arguments = "-Xmx256m jar.name"; 

     Process.Start(psi); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 
} 

Répondre

12

Une meilleure façon sera de créer une instance Process et capturer la sortie en utilisant un flux comme celui-ci:

Process cmd = new Process(); 
cmd.StartInfo.FileName = "JAVA.exe"; 
cmd.StartInfo.Arguments = "-Xmx256m jar.name"; 
cmd.StartInfo.UseShellExecute = false; 
cmd.StartInfo.CreateNoWindow = true; 
cmd.StartInfo.RedirectStandardOutput = true; 
cmd.StartInfo.EnvironmentVariables.Add("VARIABLE1", "1"); 
cmd.Start(); 

StreamReader sr = cmd.StandardOutput; 
string output = sr.ReadToEnd(); 
cmd.WaitForExit(); 
6

Vous devez définir RedirectStandardOutput true, et la meilleure façon d'obtenir des résultats est d'utiliser le mécanisme évènementiel:

Process p = Process.Start(psi); 
p.BeginOutputReadLine(LineHandler); 
p.EnableRaisingEvents = true; 

LineHandler est une méthode appropriée pour recueillir chaque ligne de la sortie, p.ex. dans un StringWriter.

+0

Merci Jon. Je vais essayer. Mettra à jour ma question dès que de nouveaux problèmes surviendront. –

1

Set
ProcessStartInfo.RedirectStandardOutput
et
.RedirectStandardError.
Ensuite, vous pouvez lire les flux StandardOutput et StandardError sur l'objet de processus renvoyé par Process.Start. MSDN a un échantillon agréable et simple pour vous.

Questions connexes