【问题标题】:How can i read file from data folder?如何从数据文件夹中读取文件?
【发布时间】:2015-12-10 14:50:15
【问题描述】:

在我的应用程序中,我必须从数据文件夹中的文件中读取数据。但我不能那样做。我对此进行了搜索,但许多用户说您无法从数据文件夹中读取数据。我们看到Rootbrowser可以从android私有文件夹文件中读取数据。我的问题是如何从data/misc 文件夹中读取文件?

【问题讨论】:

    标签: android file root


    【解决方案1】:

    没有从任何文件夹中读取任何文件的解决方案(除非您的设备已植根,即使这样它也可能依赖于设备),但很可能您的问题需要比这更具体的东西。例如,如果一个应用程序想要将数据传递给另一个应用程序,这是可能的。如果您需要读取您自己的应用程序创建的文件,那完全没有问题。请就您的特定问题而不是一般情况提出问题。

    更新:从 cmets 中的讨论结果表明,您使用的是 root 设备,并且对感兴趣文件夹的权限不允许所有人阅读它,这是关于访问策略的正常决定。如果您的应用只在有根手机上运行是可以的,您可以从 https://stackoverflow.com/a/26654728/755804 借用 sudoForResult()

    Runtime.getRuntime().exec("ls");sudoForResult("ls "+path) 之间的区别在于,在后一种情况下,lssu 执行(通过 sudoForResult() 中的 Runtime.getRuntime().exec("su"); 调用),因此具有超级用户权限。

    或者,您可以尝试为所有人开放对这些文件夹的访问权限。这将需要su,必须从您的程序中完成,并且很难测试,因为在第一次运行之后目录权限已经更改。 OTOH,如果您设法通过访问权限使该目录对您的应用程序可读,您可以取消设备根目录,并且您的应用程序仍然可以工作。

    【讨论】:

    • 不,我有一个应用程序,我想读取存储在 /data/misc 文件夹中的一些数据。但我看不懂。我可以通过Root Browser 看到该文件,但我无法从我的应用程序中读取它。
    • ls -l /data/miscls -l /data/misc/ 来自控制台。你看到了什么?
    • 我明白,但如果您不发布输出,您将自行处理。 (好吧,即使您要自己解决问题,也需要该输出。)
    • This 是我用于列表文件的代码。
    • 从非 root 控制台发出命令 ls -l /data/miscls -l /data/misc/ 时会显示什么输出?它必须是所有者、权限以及文件列表或错误消息。这是什么?
    【解决方案2】:

    在我的应用程序中,我必须从数据文件夹中的文件中读取数据

    如果“数据文件夹”是指/data 或其下的任意目录,则您没有对其中大部分内容的读取权限,除非可能在有根设备上。

    我搜索过,但很多用户说您无法从数据文件夹中读取数据

    正确。

    我们看到Rootbrowser可以从android私有文件夹文件中读取数据

    如果您所说的“Rootbrowser”是指Root Browser,则该应用只能在有根设备上执行此操作。你可以通过阅读产品描述来判断,它说:

    根浏览器是根用户的终极文件管理器

    【讨论】:

    • 感谢您的信息。我的手机中安装了根浏览器,使用它我可以看到 /data 文件夹和子文件夹以及其中的任何文件和文本文件内容。但我在手机中测试我的应用程序,无法读取 /data 文件夹和子文件夹中的文件。为什么我不能?我用这个代码this code
    • 这是由于 selinux 强制执行,您需要 oem-unlock 设备。无论如何,从 android 的 P 升级开始,所有应用程序都强制使用 /sdcard 分区
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 2012-04-12
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2012-11-27
    • 2011-10-11
    • 2014-12-23
    相关资源
    最近更新 更多