将 /data/data 中的文件夹复制到 SD 卡,反之亦然

Posted

技术标签:

【中文标题】将 /data/data 中的文件夹复制到 SD 卡,反之亦然【英文标题】:Copy folders in /data/data to sdcard & vice-versa 【发布时间】:2012-05-30 21:45:00 【问题描述】:

当我尝试将 /data/data 中的文件夹复制到 SD 卡时遇到问题。

我的手机已经root了。

我在我的应用中请求超级用户权限:

Runtime.getRuntime().exec("su");

我正在使用来自 Apache 的 FileUtils 来复制文件/文件夹。

我发现如果我手动将文件夹权限更改为 READ 我可以将其从 /data/data 复制到 SDcard。

有没有什么办法可以递归地改变/data/data内所有文件夹的RW权限来读写文件夹?

我试过chmod,但是没用。

Runtime.getRuntime().exec("chmod 777 /data/data");

我想做一个备份程序,我想读取 /data/data 中的一些文件夹并将它们写入 SD 卡的文件夹中。

然后我想恢复从 SD 卡文件夹中读取它们的文件夹并将它们写入 /data/data

你能帮帮我吗?

【问题讨论】:

可以做到,因为有一个程序(Titanium Backup)可以做到这一点(它读取/data/data/folder中的文件并复制到sdcard中,然后恢复它)...拜托,帮帮我。 有没有办法以超级用户身份复制文件和文件夹??? 【参考方案1】:

最后我明白了!!!!

我使用带有 cp 命令的 SuperUser 进程来复制文件和文件夹。

希望对您有所帮助。

String comando = "cp -r /data/data/sourcefolder /sdcard/targetfolder";
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
os.writeBytes(comando + "\n");
os.flush();
os.writeBytes("exit\n");
os.flush();
try

 int suProcessRetval = suProcess.waitFor();
 if (255 != suProcessRetval)
 
  // Acceso Root concedido
  retval = true;
 else
 
  // Acceso Root denegado
  retval = false;
 

catch (Exception ex)

 Log.w("Error ejecutando el comando Root", ex);

非常感谢本论坛的所有人以及您提供的所有帮助!

【讨论】:

感谢您的回答!

以上是关于将 /data/data 中的文件夹复制到 SD 卡,反之亦然的主要内容,如果未能解决你的问题,请参考以下文章

将相机图像保存在手机记忆库中的自定义位置

[android] 保存文件到SD卡

将文件从 SD 卡的文件夹复制到 SD 卡的另一个文件夹

如何将文件从“资产”文件夹复制到 SD 卡?

怎么在CMD下复制"文件夹" 想把手机里的文件夹复制到电脑里 如:复制data/data里的所以文件到电脑的F盘

将目录和文件从 res/raw 文件夹复制到 sd 卡 - android