Java Runtime.exec 執行shell命令__Java

來源:互聯網
上載者:User

       最近做一個團購檔案下載服務的時候,自己偷懶不想寫檔案下載的邏輯,而且Linux的curl 命令非常強大,於是乎想直接通過Java來執行curl命令做下載。

       在Java中,你可以通過Runtime.getRuntime().exec 來執行外部的shell命令。

Process proc = Runtime.getRuntime().exec("ping www.baidu.com");InputStream in = proc.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(in, "GBK"));String line = null;while((line=br.readLine())!=null){System.out.println(line);}


下面通過執行一個簡單的 ping命令並列印其輸出 作為樣本。


package com.ricky.java.sms;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class RuntimeTest {public static void main(String[] args) {//methodA();methodB();}public static void methodB() {BufferedReader br = null;try {Process proc = Runtime.getRuntime().exec("ping www.baidu.com");InputStream in = proc.getInputStream();br = new BufferedReader(new InputStreamReader(in, "GBK"));String line = null;while((line=br.readLine())!=null){System.out.println(line);}} catch (IOException e) {e.printStackTrace();}finally{if(br!=null){try {br.close();} catch (IOException e) {e.printStackTrace();}}}}public static void methodA() {InputStream in = null;try {Process proc = Runtime.getRuntime().exec("ping www.baidu.com");in = proc.getInputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();in = proc.getInputStream();byte[] buf = new byte[1024];int len = 0;while ((len = in.read(buf, 0, 1024)) != -1) {baos.write(buf, 0, len);}byte[] arr = baos.toByteArray();String result = new String(arr, "GBK");System.out.println("result="+result);} catch (IOException e) {e.printStackTrace();}finally{if(in!=null){try {in.close();} catch (IOException e) {e.printStackTrace();}}}}}



列印的結果如下:



正在 Ping www.a.shifen.com [180.149.131.205] 具有 32 位元組的資料:
來自 180.149.131.205 的回複: 位元組=32 時間=1ms TTL=56
來自 180.149.131.205 的回複: 位元組=32 時間=1ms TTL=56
來自 180.149.131.205 的回複: 位元組=32 時間=1ms TTL=56
來自 180.149.131.205 的回複: 位元組=32 時間=1ms TTL=56


180.149.131.205 的 Ping 統計資訊:
    資料包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
    最短 = 1ms,最長 = 1ms,平均 = 1ms






相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.