Runtime.exec()小结

Runtime.exec()小结
发表于3 天前  ⁄ 编程开发  ⁄ 暂无评论

按项目需求,把终端系统logcat日志写到SD卡下的某个文件,方便拷贝/查看。以下是利用Runtime.exec()函数执行logcat指令来实现的小结。

一、exec介绍:

可以使用exec的重载形式有好几种,常用的有:

public Process exec(String command)

public Process exec(String[] command)

public Process exec(String command,   String[] envp, File dir)
            throws IOException在有指定环境和工作目录的独立进程中执行指定的字符串命令。
这是一个很有用的方法。对于 exec(command, envp, dir) 形式的调用而言,其行为与调用 exec(cmdarray, envp, dir) 完全相同,其中 cmdarray 是 command 中所有标记的数组。
更准确地说,可以使用通过调用 new StringTokenizer(command) 创建的 StringTokenizer 将 command 字符串拆解成标记,调用时不对字符类别做进一步的修改。然后将标记生成器所生成的标记以相同的顺序放入新的字符串数组 cmdarray 中。
参数:
command - 一条指定的系统命令。
envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value;如果子进程应该继承当前进程的环境,或该参数为 null。
dir - 子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为 null。
返回:
一个新的 Process 对象,用于管理子进程
抛出:
SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程
IOException - 如果发生 I/O 错误
NullPointerException - 如果 command 为 null,或者 envp 的某个元素为 null
IllegalArgumentException - 如果 command 为空

二、注意点:

    1、exec的String command只能执行一条指令,如果需要执行多条指令需要放入sh脚本文件中执行或者调用多次exec函数。

    2、exec的String command不支持通配符(*)。

    3、有些指令需要指定File dir(工作目录)。

    4、默认的工作目录是根目录/。(通过执行指令pwd可查到)

    5、导出logcat日志到SD卡ziyouku目录,参数:("logcat -df logcat.log",new File("/mnt/sdcard/ziyouku/"))

    6、logcat读取权限:<uses-permission android:name="android.permission.READ_LOGS" />

你可能感兴趣的:(Runtime.exec()小结)