http://www.2cto.com/kf/201201/117397.html
在Android可能有的系统信息没有直接提供API接口来访问,为了获取系统信息时我们就要在用shell指令来获取信息,这时我们可以在代码中来执行命令 ,这里主要用到ProcessBuilder 这个类.
代码部分 :
[java]
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 ;
}
}
}
分享到:
相关推荐
运行脚本时,这两个变量会被解析并传递给`java`命令。 此外,你可能还需要根据实际需求调整脚本,比如设置JVM参数、处理错误输出、记录日志等。在shell脚本中,可以使用`>&`重定向输出;在bat脚本中,可以使用`>>`...
在Java程序中调用Shell命令并传入带有特殊字符的参数时,会遇到一些挑战,因为Shell和DataX对特殊字符的处理方式可能不同。 首先,让我们理解Java如何调用Shell命令。在Java中,我们可以使用Runtime或者...
Java Socket远程调用Shell是一种通过Java程序利用Socket通信协议实现对远程服务器的Shell命令执行的技术。这种方式常用于系统管理、自动化运维或者分布式系统的组件交互。下面将详细介绍这一技术的实现原理、步骤...
总之,Java调用shell脚本向DataX传递参数,尤其是在where条件中包含特殊字符时,需要关注字符串转义、shell命令构建以及安全问题。同时,合理设计和使用配置文件能有效提高代码的灵活性和可维护性。
在本文中,我们将深入探讨如何使用Java来执行远程的Shell命令,以及涉及的相关知识点。 首先,Java调用远程Shell脚本的核心依赖是SSH(Secure Shell),这是一种网络协议,用于在不安全的网络上提供安全的远程登录...
本文将详细介绍如何在Android中执行Java命令以及如何使用Java代码执行并解析shell命令。 首先,我们要了解如何在Android上运行Java程序。由于Android使用Dalvik虚拟机(DVM)和后来的ART运行时环境,而不是标准的...
通过Python Interpreter API,Java代码可以调用Python脚本并获取结果。 - **Kivy or PyDroid3**: 这些第三方库允许在Android设备上完整地运行Python环境,提供更强大的Python支持。 3. **Shell命令执行**: - **...
Ant 提供了一系列内置的任务,可以执行文件操作(如复制、移动等)、Java 编译、打包(WAR 和 JAR 文件)以及执行 shell 命令等任务。此外,Ant 还支持自定义任务,使得用户可以根据项目需求扩展其功能。 #### 三、...
在IT领域,特别是软件开发与运维(DevOps)过程中,Java程序调用Shell脚本是一种常见的需求,用于执行系统级任务、数据处理或自动化流程。本文将深入探讨如何使用Java来调用Shell脚本,包括基本原理、代码实现、常见...
基于Java实现ssh命令登录主机执行shell命令过程解析是指使用Java语言实现ssh命令登录主机,并执行shell命令的过程。在这个过程中,我们将使用Java语言连接到远程主机,并执行特定的shell命令,以实现远程管理和自动...
在本场景中,`hello.sh`很可能是用来执行特定任务的shell脚本,例如读取`field.txt`文件中的Java字段信息,然后根据这些信息生成模板文件。 `field.txt`文件可能包含Java类中字段的定义,比如字段名称、类型、访问...
### cxf 生成java代码的执行命令 #### 命令概述 `wsdl2java.bat`是Apache CXF提供的一个脚本工具,它可以用来根据WSDL文件生成相应的Java客户端和服务端的存根代码(Stub code)。这使得开发人员能够更加便捷地与...
当Java执行Shell命令时,应该捕获并处理`IOException`和`InterruptedException`,这两个异常通常与命令执行和进程中断有关。同时,通过检查`Process`对象的退出代码,可以得知命令执行是否成功。 5. **资源管理**...
Shell脚本的核心是Shell解释器,如Bash(Bourne-Again SHell),它解析并执行脚本中的指令。Shell脚本可以用于文件操作、系统管理、任务调度等多种场景,例如定时备份、日志处理等。编写Shell脚本的基本元素包括变量...
总的来说,这个“java_shell_template.tar.gz”提供了一种自动化的方式,通过Shell脚本解析Java字段信息并生成对应的代码模板,提高了开发效率。使用者需要了解基本的Shell脚本语法,以便理解并可能定制“hello.sh”...
如果"myos"是源代码,我们期待看到一个包含类和方法的Java项目,这些类和方法对应于Unix Shell的各种命令。例如,可能有一个名为`FileSystem`的类来表示文件系统,还有`CommandExecutor`类来解析和执行用户输入的...
总的来说,这个Shell脚本通过解析文件类型并应用相应的`sed`命令,实现了自动去除源代码文件中注释的功能。这对于版本控制、代码分析或者仅仅是为了查看不包含注释的代码逻辑都十分有用。然而,需要注意的是,这种...
这个文件很可能是Java实现的一个名为CRaSH(Command-line Remote Shell)的开源工具的源代码,版本为1.1.0。CRaSH是一个用于Java应用的轻量级、基于HTTP协议的命令行shell,允许开发者在远程服务器上执行命令和管理...
通过Java代码调用shell命令,开发者可以轻松地实现跨平台的系统操作,无需了解不同操作系统下的具体命令语法。 在Java中执行shell命令,通常涉及使用`Runtime.getRuntime().exec()`或`ProcessBuilder`类。...