最近做一个团购文件下载服务的时候,自己偷懒不想写文件下载的逻辑,而且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
来自:http://blog.csdn.net/top_code/article/details/43052399 |