`

JAVA代码执行shell命令 并解析

 
阅读更多

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 ; 
        } 
    } 


分享到:
评论

相关推荐

    shell,bat脚本运行java程序

    运行脚本时,这两个变量会被解析并传递给`java`命令。 此外,你可能还需要根据实际需求调整脚本,比如设置JVM参数、处理错误输出、记录日志等。在shell脚本中,可以使用`>&`重定向输出;在bat脚本中,可以使用`>>`...

    java调用shell向DataX传参,带where条件,特殊字符

    在Java程序中调用Shell命令并传入带有特殊字符的参数时,会遇到一些挑战,因为Shell和DataX对特殊字符的处理方式可能不同。 首先,让我们理解Java如何调用Shell命令。在Java中,我们可以使用Runtime或者...

    java Sokcet远程调用shell

    Java Socket远程调用Shell是一种通过Java程序利用Socket通信协议实现对远程服务器的Shell命令执行的技术。这种方式常用于系统管理、自动化运维或者分布式系统的组件交互。下面将详细介绍这一技术的实现原理、步骤...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    总之,Java调用shell脚本向DataX传递参数,尤其是在where条件中包含特殊字符时,需要关注字符串转义、shell命令构建以及安全问题。同时,合理设计和使用配置文件能有效提高代码的灵活性和可维护性。

    Java调用远程Shell脚本

    在本文中,我们将深入探讨如何使用Java来执行远程的Shell命令,以及涉及的相关知识点。 首先,Java调用远程Shell脚本的核心依赖是SSH(Secure Shell),这是一种网络协议,用于在不安全的网络上提供安全的远程登录...

    Android中执行java命令的方法及java代码执行并解析shell命令

    本文将详细介绍如何在Android中执行Java命令以及如何使用Java代码执行并解析shell命令。 首先,我们要了解如何在Android上运行Java程序。由于Android使用Dalvik虚拟机(DVM)和后来的ART运行时环境,而不是标准的...

    java android 执行脚本代码(java代码)

    通过Python Interpreter API,Java代码可以调用Python脚本并获取结果。 - **Kivy or PyDroid3**: 这些第三方库允许在Android设备上完整地运行Python环境,提供更强大的Python支持。 3. **Shell命令执行**: - **...

    Java 代码调用ANT

    Ant 提供了一系列内置的任务,可以执行文件操作(如复制、移动等)、Java 编译、打包(WAR 和 JAR 文件)以及执行 shell 命令等任务。此外,Ant 还支持自定义任务,使得用户可以根据项目需求扩展其功能。 #### 三、...

    java调用shell

    在IT领域,特别是软件开发与运维(DevOps)过程中,Java程序调用Shell脚本是一种常见的需求,用于执行系统级任务、数据处理或自动化流程。本文将深入探讨如何使用Java来调用Shell脚本,包括基本原理、代码实现、常见...

    基于Java实现ssh命令登录主机执行shell命令过程解析

    基于Java实现ssh命令登录主机执行shell命令过程解析是指使用Java语言实现ssh命令登录主机,并执行shell命令的过程。在这个过程中,我们将使用Java语言连接到远程主机,并执行特定的shell命令,以实现远程管理和自动...

    java字段template shell模板生成

    在本场景中,`hello.sh`很可能是用来执行特定任务的shell脚本,例如读取`field.txt`文件中的Java字段信息,然后根据这些信息生成模板文件。 `field.txt`文件可能包含Java类中字段的定义,比如字段名称、类型、访问...

    cxf 生成java代码的执行命令

    ### cxf 生成java代码的执行命令 #### 命令概述 `wsdl2java.bat`是Apache CXF提供的一个脚本工具,它可以用来根据WSDL文件生成相应的Java客户端和服务端的存根代码(Stub code)。这使得开发人员能够更加便捷地与...

    Java开发的SHELL CRaSH

    当Java执行Shell命令时,应该捕获并处理`IOException`和`InterruptedException`,这两个异常通常与命令执行和进程中断有关。同时,通过检查`Process`对象的退出代码,可以得知命令执行是否成功。 5. **资源管理**...

    shell脚本+ant脚本

    Shell脚本的核心是Shell解释器,如Bash(Bourne-Again SHell),它解析并执行脚本中的指令。Shell脚本可以用于文件操作、系统管理、任务调度等多种场景,例如定时备份、日志处理等。编写Shell脚本的基本元素包括变量...

    java_shell_template.tar.gz

    总的来说,这个“java_shell_template.tar.gz”提供了一种自动化的方式,通过Shell脚本解析Java字段信息并生成对应的代码模板,提高了开发效率。使用者需要了解基本的Shell脚本语法,以便理解并可能定制“hello.sh”...

    java_unix_shell.rar_java 模拟 shell_文件管理 java

    如果"myos"是源代码,我们期待看到一个包含类和方法的Java项目,这些类和方法对应于Unix Shell的各种命令。例如,可能有一个名为`FileSystem`的类来表示文件系统,还有`CommandExecutor`类来解析和执行用户输入的...

    Linux中使用Shell脚本去掉源码注释的方法

    总的来说,这个Shell脚本通过解析文件类型并应用相应的`sed`命令,实现了自动去除源代码文件中注释的功能。这对于版本控制、代码分析或者仅仅是为了查看不包含注释的代码逻辑都十分有用。然而,需要注意的是,这种...

    java源码:Java开发的SHELL CRaSH.gz

    这个文件很可能是Java实现的一个名为CRaSH(Command-line Remote Shell)的开源工具的源代码,版本为1.1.0。CRaSH是一个用于Java应用的轻量级、基于HTTP协议的命令行shell,允许开发者在远程服务器上执行命令和管理...

    JavaShellCommand:用于在 windows 和 linux 上执行 shell 命令的 Java 实用程序

    通过Java代码调用shell命令,开发者可以轻松地实现跨平台的系统操作,无需了解不同操作系统下的具体命令语法。 在Java中执行shell命令,通常涉及使用`Runtime.getRuntime().exec()`或`ProcessBuilder`类。...

Global site tag (gtag.js) - Google Analytics