Java Runtime Exec Tutorial

Java Runtime klasse gir tilgang til kjøretidsmiljø der programmet kjører. Kjøretid er exec metoder gjør det mulig å kjøre eksterne programmer fra et Java-program. Utføre eksterne applikasjoner innen et Java-program lar deg åpne en nettside i en nettleser, samhandle med driftssystemverktøy eller starte et konsoll vindu.

Få Runtime Environment

Alle Java-programmer har en forekomst av kjøremiljøet. Bruk Runtime er getRuntime () metode for å få tilgang til dette objektet. For eksempel:

Runtime rt = Runtime.getRuntime ();

Utfør et eksternt program

Runtime tilbyr flere måter å ringe exec metoden, som returnerer en prosess objekt. Den enkleste måten å gjennomføre en ekstern applikasjon er den Runtime metode exec (String kommando), der \ "kommandoen \" er kommandolinjen som utfører programmet. Følgende samtale utfører de \ "ls \" kommandoen for å få en katalogoppføring for rotkatalogen på en Linux eller Unix-system:

Prosess p = rt.exec (\ "ls / \")

Exec metoden kan også bli kalt med en rekke inneholder kommandoen og dens argumenter, miljø variable innstillinger og arbeidskatalog.

Få Process Information

Prosessen klassen gir tilgang til inngangsstrømmen, output stream, feilstrøm og utgang verdien av utført prosessen.

Den Process.getInputStream metoden gir tilgang til prosessen 'standard output stream via programmets input stream. Strømmen skal bufret. Fortsetter forrige eksempel, åpner følgende kode utgangen fra \ "ls / \" kommandoen skriver ut resultatene.

Input istrm = p.getInputStream ()

InputStreamReader istrmrdr = ny InputStreamReader (istrm)

BufferedReader buffrdr = ny BufferedReader (istrmrdr)

string data

while ((data = buffrdr.readLine ())! = null) {
System.out.println (data)

}

På samme måte kan du ta opp feilen strøm ved hjelp av Process 'getErrorStream og bruke en bufret input stream å håndtere dataene. Søknaden kan også sende data til prosessen "input stream via programmets output stream. Bruk Process 'getOutputStream metode og buffer output stream.

avslutter

Fang exit verdien av prosessen med Process 'exitValue metode for å fastslå om det gått som normalt. Sørg for at prosessen har gått ut ved hjelp av Process 'waitFor metode for å føre den aktuelle tråden for å vente på at prosessen for å avslutte. For eksempel, ta avkjøringen verdi i en variabel, som kan brukes senere til å ta avgjørelser om hvordan søknaden din vil fortsette:

int ev = 0

if (p.waitFor ()! = 0) {
ev = p.exitValue ()

}

En prosess kan bli drept ved hjelp av Process 'ødelegge metode

betraktninger

Java 5 introduserte ProcessBuilder klassen å erstatte Runtime.exec. ProcessBuilder gjør det lettere å tilpasse prosessen, og gir bedre kontroll over starter prosessen.

advarsler

En av de viktigste funksjonene i Java programmeringsspråk er dens portabilitet til flere plattformer. Ringe eksterne prosesser som er spesifikke for et bestemt operativsystem holder søknad fra å være bærbar. Unngå å bruke Runtime.exec når en metode for å oppnå samme mål eksisterer i Java-språket.