无法将命令写入我的DataOutputStream

时间:2016-01-18 15:05:30

标签: java android

我无法将命令写入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();

3 个答案:

答案 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();

读回你的字符串