SORU
8 Mayıs 2011, Pazar


Nasıl boru çalışma Zamanı ile iş yapmak için.() exec?

Aşağıdaki kodu göz önünde bulundurun:

String commandf = "ls /etc | grep release";

try {

    // Execute the command and wait for it to complete
    Process child = Runtime.getRuntime().exec(commandf);
    child.waitFor();

    // Print the first 16 bytes of its output
    InputStream i = child.getInputStream();
    byte[] b = new byte[16];
    i.read(b, 0, b.length); 
    System.out.println(new String(b));

} catch (IOException e) {
    e.printStackTrace();
    System.exit(-1);
}

Programın çıktısı:

/etc:
adduser.co

Kabuğundan çalıştırdığımda, tabii ki, beklendiği gibi çalışır:

poundifdef@parker:~/rabbit_test$ ls /etc | grep release
lsb-release

Bu İnternet'te, boru davranış çapraz platform değil gerçeği nedeniyle, Java fabrika üreten Java ile çalışan parlak beyinlerinden boru iş garantisini veremem söyle.

Bunu nasıl yapabilirim?

Ben yapmıyor hepsi benim ayrıştırma kullanarak Java yapıları yerine grep sed, çünkü eğer değiştirmek istiyorum dili olacağım mecburen yeniden yazmak benim ayrıştırma kodu olan dil, inanılmaz bir no-go.

Nasıl kabuk komutlarını çağırırken Java boru ve yönlendirme yaptırabilir miyim?

CEVAP
8 Mayıs 2011, Pazar


Bir senaryo yazmak, ve ayrı komutlar yerine çalıştırabiliriz.

Boru kabuk parçası da böyle bir şey yapabilirsiniz:

String[] cmd = {
"/bin/sh",
"-c",
"ls /etc | grep release"
};

Process p = Runtime.getRuntime().exec(cmd);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Central

    Android Cent

    13 Kasım 2008
  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007
  • The Onion

    The Onion

    14 Mart 2006