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