java - Android 应用程序 shell "no such file or directory",在文件资源管理器和 adb 中正常

标签 java android ioexception nosuchfileexception

我正在尝试将文件从 /path/to the/file.ext (是的,它有空格,我怀疑这至少是问题的一部分)到 /data/data/com.my_pkg.app/file.ext

在我的(根)应用程序中,我这样做:

String cmd = "su -c \"cp /path/to\\ the/file.ext /data/data/com.my_pkg.app/file.ext\"";
try {
    Process process;
    process = new ProcessBuilder(cmd).start();
    try {
        process.waitFor();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
} catch (IOException e1) {
    e1.printStackTrace();
}

但这会引发IOException:没有这样的文件或目录

检查我的理智,我打开了一个根文件资源管理器应用程序,导航到上面的路径,复制它,并将其粘贴到我的应用程序目录中,一切都很好。

为什么cp找不到它? - 文件资源管理器应用程序必须在所有 GUI 下执行相同的操作(好吧,进行修改使其工作!)。

编辑:完整错误:

W/System.err( 2441): java.io.IOException: Error running exec(). 
     Command: [su -c "cp /path/to\ the/file.ext /data/data/com.my_pkg.app/file.ext"] 
     Working Directory: null 
     Environment: [ANDROID_ROOT=/system, 
          EMULATED_STORAGE_SOURCE=/mnt/shell/emulated, 
          LOOP_MOUNTPOINT=/mnt/obb, 
          EMULATED_STORAGE_TARGET=/storage/emulated, 
          ANDROID_BOOTLOGO=1, LD_LIBRARY_PATH=/vendor/lib:/system/lib,             
          EXTERNAL_STORAGE=/storage/emulated/legacy, 
          ANDROID_SOCKET_zygote=10, 
          ANDROID_DATA=/data, 
          PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin, 
          ANDROID_ASSETS=/system/app, ASEC_MOUNTPOINT=/mnt/asec, 
          BOOTCLASSPATH=/system/framework/core.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/webviewchromium.jar, 
          ANDROID_PROPERTY_WORKSPACE=9,0, 
          ANDROID_STORAGE=/storage]

最佳答案

我将其发布为答案,因为它解决了我的问题正如我所问的,因此应该为通过搜索发生的任何人解决这个问题。然而,对我来说,it just led to another question .

通过更改字符串:

String cmd = "su -c \"cp /path/to\\ the/file.ext /data/data/com.my_pkg.app/file.ext\"";

到一个数组(其余代码按原样连接/构建):

String[] cmd = {"su", "-c", "\"cp /path/to\\ the/file.ext /data/data/com.my_pkg.app/file.ext\""};

所有错误均已解决。我无法告诉你原因,但至少是这样。

关于java - Android 应用程序 shell "no such file or directory",在文件资源管理器和 adb 中正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077370/

相关文章:

java - Android 中出现 IOException?

javascript - Java:Java 中 JavaScript localeCompare() 的替代方案是什么?

Java 详细 :gc How to read the output?

java - TCP数据包进入服务器,但没有进入监听程序

java - 这个文件阅读器(循环)有什么问题?

java - 为什么这段代码会抛出 IOException?

当我处理不同的类时,Java 对象/类型总是给我错误

java - 无法通过 Java 8 上的反射调用 HashMap 的 getEntry

java - 线程中的自定义函数

java - 使用 SAXParser 从 XML 中检索 HTML 编码的文本