我无法将命令写入DataOutputStream
,因为它需要数据类型BYTES
,如何从命令中获取字节?
"tinymix" -> toBytes
"exit" -> toBytes
我不知何故需要将其转换为Bytes,但是如何?
Process p = Runtime.getRuntime().exec(new String[]{"su", "-c", "system/bin/sh"});
DataOutputStream stdin = new DataOutputStream(p.getOutputStream());
InputStream stdout = p.getInputStream();
stdin.write("tinymix\n"); // THIS LINE IS BROKEN
stdin.write("exit\n"); // THIS LINE IS BROKEN
stdin.flush();
stdin.close();
答案 0 :(得分:1)
您可以使用(例如)OutputStreamWriter
:
OutputStreamWriter stdin= new OutputStreamWriter(p.getOutputStream());
使用DataOutputStream
的实例。
您的代码如下所示:
Process p = Runtime.getRuntime().exec(new String[]{"su", "-c", "system/bin/sh"});
OutputStreamWriter stdin = new OutputStreamWriter(p.getOutputStream());
InputStream stdout = p.getInputStream();
stdin.write("tinymix\n");
stdin.write("exit\n");
stdin.flush();
stdin.close();
答案 1 :(得分:1)
您可以在字符串对象上调用getBytes()
以将字符串作为字节
更改此
stdin.write("tinymix\n"); // THIS LINE IS BROKEN
stdin.write("exit\n"); // THIS LINE IS BROKEN
进入这个
stdin.write("tinymix\n".getBytes());
stdin.write("exit\n".getBytes());
答案 2 :(得分:0)
尝试
stdin.writeUTF("str");
这允许您使用DataOutputStream
编写字符串然后你可以使用
std.readUTF();
读回你的字符串