Hej! Vet ni hur man känner av vilket operativsystem som ens applikation kör på? Jag behöver skilja ut tre huvudgrupper:
Windows 9x
Windows 2000/XP
Unix-varianter
Dessutom skulle jag behöva köra ett konsolkommando om det är Windows 9x som körs, och samla in dess utdata. Finns det inget klockrent sätt att göra detta, så kan jag nöja mig med hur man kallar på ett externt kommando, så kan jag fixa dataläsningen själv.
Men jag har för mig att jag läst nånstans på sun's forum att os.name inte behöver returnera "rätt", det är upp till var JVM.. minns att jag också läste nåt om att en JVM gav en "windows 95" fastän det kördes på en '98-burk.
95, 98 och me går under samma kategori denna gång, så det är inget problem. Och jag ska bara använda av sun VM, så det går nog bra. Den länken var användbar.
Åter till min andra fråga, hur kör man systemkommandon, med andra ord startar program i värdmiljön? (Bara aktuellt för Windows för övrigt)
try {
String cmd = "ver";
Process process = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", cmd});
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while((line = br.readLine()) != null) {
System.out.println(line);
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
Eftersom vi vill köra ett systemkommando så anropar vi det via cmd.exe med växeln /c (Carries out the command specified by string and then terminates). Process-objektet som du får i retur från exec() ger dig en in- och en utström.
// EDIT: cmd.exe-joxet gäller självklart i en WIN-miljö, i en UNIX-miljö så kör man via lämpligt skal, t.ex bash.