Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Komentorivin InputStream kanssa ongelmia

Triton [09.02.2011 22:35:33]

#

Olen koettanut toteuttaa sovellusta, jolla pystyy suorittamaan DOS-komentoja. Ongelmaksi on nyt muodostunut Windowsin komentorivin palauttaman datan tulostaminen.

Esimerkiksi, kun yritän suorittaa komentoa:

net user Vieras *

niin saan seuraavan vastauksen:

Anna käyttäjän salasana: Vahvista salasana:

Komentojen suorittamiseen olen käyttänyt Javan Runtime-oliota ja komentorivin InputStreamia olen tulkinnut Scanner-oliolla. Olen joskus aikaisemminkin törmännyt Scannerin kohdalla tuohon samaan ilmiöön, mutten nyt kuollaksenikaan muista, miten ongelma ratkesi.

Metabolix [09.02.2011 23:31:38]

#

Veikkaus: Käyttämäsi ohjelma luottaa siihen, että enter tulee käyttäjältä. Siksi ohjelma tulostaa rivit ilman omia rivinvaihtoja. Tämä on ihan tyypillistä, eikä asialle voi muuta kuin käyttää omia viritelmiä: yritä toimittaa käyttäjän syöte ohjelmalle rivi kerrallaan, ja jokaisen rivin jälkeen tulosta ylimääräinen rivinvaihto, kuten komentorivilläkin tapahtuu.

etsubu [10.02.2011 16:40:52]

#

No itse voin neuvoa, että tuon komennon voi laittaa yhteen pötköö:
net user Vieras salasana
jolloin käyttäjän vieras salasanaksi tulee: salasana
ja tavaran printtaus toimii näin:

Runtime r = Runtime.getRuntime();
String komento = "net user Vieras *";
Process p = r.exec(komento);

BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()),8000);
String inputLine;
while ((inputLine = in.readLine()) != null) {
     System.out.println(inputLine);

}
in.close();

toivottavasti auttoi!

Triton [21.02.2011 02:13:10]

#

Kiitos vastauksista.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta