HILFE tasklist.exe mit java verarbeiten

hatte mal ne frage was daran falsch ist ??:
Code:
import java.io.*;
import java.util.StringTokenizer;

/**
 *
 * @author Muneeswaran
 */
public class GetProcessList
{

 private String GetProcessListData()
 {
 Process p;
 Runtime runTime;
 String process = null;
 try {
 System.out.println("Processes Reading is started...");

 //Get Runtime environment of System
 runTime = Runtime.getRuntime();

 //Execute command thru Runtime
 p = runTime.exec("tasklist");      // For Windows
 //p=r.exec("ps ux");              //For Linux

 //Create Inputstream for Read Processes
 InputStream inputStream = p.getInputStream();
 InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

 //Read the processes from sysrtem and add & as delimeter for tokenize the output
 String line = bufferedReader.readLine();
 process = "&";
 while (line != null) {
 line = bufferedReader.readLine();
 process += line + "&";
 }

 //Close the Streams
 bufferedReader.close();
 inputStreamReader.close();
 inputStream.close();

 System.out.println("Processes are read.");
 } catch (IOException e) {
 System.out.println("Exception arise during the read Processes");
 e.printStackTrace();
 }
 return process;
 }

 private void showProcessData()
 {
 try {

 //Call the method For Read the process
 String proc = GetProcessListData();

 //Create Streams for write processes
 //Given the filepath which you need.Its store the file at where your java file.
 OutputStreamWriter outputStreamWriter =
 new OutputStreamWriter(new FileOutputStream("ProcessList.txt"));
 BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);

 //Tokenize the output for write the processes
 StringTokenizer st = new StringTokenizer(proc, "&");

 while (st.hasMoreTokens()) {
 bufferedWriter.write(st.nextToken());  //Write the data in file
 bufferedWriter.newLine();               //Allocate new line for next line
 }

 //Close the outputStreams
 bufferedWriter.close();
 outputStreamWriter.close();

 } catch (IOException ioe) {
 ioe.printStackTrace();
 }

 }

 public static void main(String[] args)
 {
 GetProcessList gpl = new GetProcessList();
 gpl.showProcessData();

 }
}

weil bei mir beim durchführen anstadt die prozesse usw. nur :
Code:
Processes Reading is started...
Processes are read.

rauskommt

schonmal danke im voraus für die hilfe :
 
weil bei mir beim durchführen anstadt die prozesse usw. nur :
Code:
Processes Reading is started...
Processes are read.
rauskommt

Hä? Was erwartest du denn? Es wird ja sonst nix auf die Konsole geschrieben. Das Ergebnis von ps ux wird/soll ja in eine Datei namens ProcessList.txt geschrieben.
 
Zuletzt bearbeitet:
achsoo ohh
ok danke
könntest du mir sagen wie ich das jetzt in einen sordentlichen array bekomme??
das ich das danach in eine jtabel machen kann ??
 
Naja, GetProcessListData liefert dir ja einen String in dem jede Zeile von ps ux mittels "&" getrennt ist. Ich wüde den String nicht mittels StringTokenizer behandeln sondern einfach am "&" aufsplitten. Dadurch erhält man sofort ein String-Array.

Code:
String[] arr = GetProcessListData().split("&");

Damit könntest für jede Zeile aus der Ausgabe von ps ux eine Row in einer JTable erzeugen. Ob du dir das so gedacht hast kann ich nur vermuten.

Wenn du das mit dem Datei rausschreiben nicht brauchst würd ichs wieder ausbauen :rolleyes:
 
nicht in einen String [][] arr rein ??
und ne andere frage wie kann ich die prozesse zähle bin iwie grade kläglich am schreitern !!!
 
aber wenn ich das so mache wie du das geschrieben hast bekomm ich die kompltte zeile
gibs auch ne möglichkeit jedes einzelnde attribut zu bekommen ??
 
Zuletzt bearbeitet:
gibs auch ne möglichkeit jedes einzelnde attribut zu bekommen ??

Grundsätzlich ja, damit hättest du auch dein String[][]. Das könnte man auch mit split machen. Dort kannst du einen regulären Ausdruck angeben (was der API-Referenz zu entnehmen ist). Du müsstest sagen "splite an jeder Stelle in einer Zeile an der mehrere Blanks hintereinander vorkommen". Wie du das machst findest jetzt am besten selbst raus.

PS: Wenn du willst daß ich dir dein Programm schreibe können wir gerne über Stundenlöhne verhandeln
PPS: Lass es mir ständig unsinnige PMs zu schreiben. Siehe PS. Das hier ist ein Forum, wenn ich antworten will werde ich das schon machen
 
Ich kenne die genaue Ausgabe jetzt nicht, aber wenn es so aussieht, wie unter Windows, wenn ich "tasklist" aufrufe, dann könntest du bei " " splitten, ggf. ist das auch ein Tab ("\t" wenn ich mich nicht täusche).

Gucke dir doch erstmal deine genaue Ausgabe an und suche nach einer Regel, wonach du das Aufteilen kannst. Die grundsätzliche Art, das zu tun, hast du ja erklärt bekommen.
 
Zurück
Oben