您的位置:首页 > 运维架构 > Shell

JAVA代码执行shell命令 并解析

2012-01-17 15:38 761 查看
在Android可能有的系统信息没有直接提供API接口来访问,为了获取系统信息时我们就要在用shell指令来获取信息,这时我们可以在代码中来执行命令 ,这里主要用到ProcessBuilder 这个类.

代码部分 :

[java] view
plaincopy

package com.yin.system_analysis;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

public class MainActivity extends Activity {

private final static String[] ARGS = {"ls","-l"};

private final static String TAG = "com.yin.system";

Button mButton;

TextView myTextView;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mButton = (Button) findViewById(R.id.myButton);

myTextView = (TextView) findViewById(R.id.textView);

mButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

myTextView.setText(getResult());

}

});

}

public String getResult(){

ShellExecute cmdexe = new ShellExecute ( );

String result="";

try {

result = cmdexe.execute(ARGS, "/");

} catch (IOException e) {

Log.e(TAG, "IOException");

e.printStackTrace();

}

return result;

}

private class ShellExecute {

/*

* args[0] : shell 命令 如"ls" 或"ls -1";

* args[1] : 命令执行路径 如"/" ;

*/

public String execute ( String [] cmmand,String directory)

throws IOException {

String result = "" ;

try {

ProcessBuilder builder = new ProcessBuilder(cmmand);

if ( directory != null )

builder.directory ( new File ( directory ) ) ;

builder.redirectErrorStream (true) ;

Process process = builder.start ( ) ;

//得到命令执行后的结果

InputStream is = process.getInputStream ( ) ;

byte[] buffer = new byte[1024] ;

while ( is.read(buffer) != -1 ) {

result = result + new String (buffer) ;

}

is.close ( ) ;

} catch ( Exception e ) {

e.printStackTrace ( ) ;

}

return result ;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: