java执行shell命令,chmod 777 xxx,改变权限无效的解决办法。

在java程序中执行shell命令,改变文件的权限,可以在命令行中执行

chmod 777 <span style="font-family: Arial, Helvetica, sans-serif;">/data/misc/123.sh"</span>

来改变权限,但是在java代码中执行这个命令时使用

Runtime.getRuntime().exec("chmod 777 /data/misc/123.sh");

无效,使用

String[] command = new String[] {"/system/bin/sh","-c","chmod 777 /data/misc/123.sh"};
Runtime.getRuntime().exec(command);

同样无效

最后通过实例化一个dataoutputstream对象,在这个对象的写字节方法里写命令才实现,代码如下:

String[] commands = new String[] { "/system/bin/sh", "-c",
			"chmod -R 777 /data/misc/123.sh" };
	Process process = null;
	DataOutputStream dataOutputStream = null;
try {

			process = Runtime.getRuntime().exec("su");
			dataOutputStream = new DataOutputStream(process.getOutputStream());
			int length = commands.length;
			for (int i = 0; i < length; i++) {
				dataOutputStream.writeBytes(commands[i] + "\n");
			}
			dataOutputStream.writeBytes("exit\n");
			dataOutputStream.flush();
			process.waitFor();
		} catch (Exception e) {

		} finally {
			try {
				if (dataOutputStream != null) {
					dataOutputStream.close();
				}
				process.destroy();
			} catch (Exception e) {
			}
		}
时间: 2024-10-19 19:20:10

java执行shell命令,chmod 777 xxx,改变权限无效的解决办法。的相关文章

FW 执行Git命令时出现各种 SSL certificate problem 的解决办法

比如我在windows下用Git clone gitURL 就提示  SSL certificate problem: self signed certificate 这种问题,在windows下出现得频率高些.我估计主要是git本身就是基于linux开发的,在windows上,容易缺失一些环境. 参考了一些文章,解决方法其实就是“直接不管ssl证书的事儿”-_-||| 方法如下: 1.创建临时环境变量: windows上命令行输入: [plain] view plain copy set GI

java运行shell命令,chmod 777 xxx,改变权限无效的解决的方法。

在java程序中运行shell命令,改变文件的权限.能够在命令行中运行 chmod 777 <span style="font-family: Arial, Helvetica, sans-serif;">/data/misc/123.sh"</span> 来改变权限,可是在java代码中运行这个命令时使用 Runtime.getRuntime().exec("chmod 777 /data/misc/123.sh"): 无效,使用

java执行shell命令

package com.pms.util; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /**  * 执行 linux

[Scala] Java执行Shell命令

Methods ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息. The Runtime.exec(String) method takes a single command string that it splits into a command and a sequence of arguments. Process proces

java执行shell命令中有空格的处理方法

?Runtime.getRuntime().exec(cmdstring);如果此时cmdstring中的参数(例如cp文件时文件名)含有特殊符号空格,此时就会出现错误,因为源码会按照一些特殊字符(" \t\n\r\f",注意到其中含有空格)去切分cmdstring变为数组,所以有空格会导致错误,这种情况可以用命令数组实现,就是把cmdstring里的东西自己放到数组里,就不用源码去切分了就不会有问题,例: abc af.zip为一个文件名 cmdstring="cp abc

执行Git命令时出现各种 SSL certificate problem 的解决办法

比如我在windows下用git clone gitURL 就提示  SSL certificate problem: self signed certificate 这种问题,在windows下出现得频率高些.我估计主要是git本身就是基于linux开发的,在windows上,容易缺失一些环境. 参考了一些文章,解决方法其实就是“直接不管ssl证书的事儿”-_-||| 方法如下: 1.创建临时环境变量: windows上命令行输入: set GIT_SSL_NO_VERIFY=true git

Java远程执行Shell命令

1. Jar包:ganymed-ssh2-build210.jar 2. 步骤: a) 连接: Connection conn = new Connection(ipAddr); conn.connect(); b)认证: boolean authenticateVal = conn.authenticateWithPassword(userName, password); c) 打开一个Session: if(authenticateVal) Session session = conn.op

Android JAVA代码执行shell命令

Android中级篇之用JAVA代码执行shell命令 [日期:2011-12-08] 来源:Linux社区  作者:y13872888163    在Android可能有的系统信息没有直接提供API接口来访问,为了获取系统信息时我们就要在用shell指令来获取信息,这时我们可以在代码中来执行命令 ,这里主要用到ProcessBuilder 这个类. 代码部分  : 1.package com.yin.system_analysis; 2.import java.io.File; 3.impor

Java 实现 ssh命令 登录主机执行shell命令

Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台.SSH在正确使用时可弥补网络中的漏洞.SSH客户端适用于多种平台.几乎