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) {
			}
		}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值