如何写入分区/数据文件?

时间:2017-02-18 22:36:37

标签: java android linux

大家好

我之所以问这个问题,是因为我需要使用/data分区中的SuperUser命令对我的应用程序创建的文件进行写访问(我不在典型目录/data/data中创建文件如果不是几个),但我当前的代码没有给出所需的结果:

    public boolean creaArchivo2(String path, InputStream is)
    throws IOException {

    final int CHUNK_SIZE = 1024 * 4;

    Process proc = Runtime.getRuntime().exec("su -c mount -o remount,rw "+path);
    Process proc1 = Runtime.getRuntime().exec("su -c mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 "+path);
    OutputStream os = new FileOutputStream(new File(path));
    byte[] chunk = new byte[CHUNK_SIZE];
    int bytesLeidos = 0;

    while ( (bytesLeidos = is.read(chunk)) > 0) {

        os.write(chunk, 0, bytesLeidos);
    }
    os.close();

    return true;

}

解释我的代码:我所做的所有代码都是尝试对分区/数据中的文件设置读写权限,然后使用java以常规方式复制数据,如果而不是在命令中明显出现的错误可以轻松复制,但它不起作用。

如果他们意识到我的代码失败了,或者知道另一种方法来实现我的目标。请告诉我。谢谢

1 个答案:

答案 0 :(得分:0)

您是否在手机上拥有超级用户权限?

你得到什么例外?你只是说"它没有工作"。我们需要更多信息,或者我们甚至无法帮助您。

如果您要使用root访问权限和超级用户命令,我建议您使用Stericson的RootTools库:
https://github.com/Stericson/RootTools

它包含了所有复杂的过程&运行时的东西,并提供一个可用的API来检查当前的root访问权限等等。