Java Runtime.exec 執行shell命令
最近做一個團購文件下載服務的時候,自己偷懶不想寫文件下載的邏輯,而且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); } </pre><br />
下面通過執行一個簡單的 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(); } } } } } </pre><br />
打印的結果如下:
正在 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
來自:http://blog.csdn.net/top_code/article/details/43052399
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!