2014-02-27 47 views
0

我想從/path/to the/file.ext(是的,它有空間,我懷疑這是至少部分麻煩)複製文件到/data/data/com.my_pkg.app/file.extAndroid應用外殼「沒有這樣的文件或目錄」,罰款在一個文件瀏覽器和Adb

在我(根)的應用程序,我做的:

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: no such file or directory

檢查我的理智,我打開了一個根文件瀏覽器應用程序,導航到上面的路徑,複製它,並將其粘貼到我的應用程序的目錄中,一切都很好。

爲什麼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] 
+0

請注意,您的** java ** IOException **不**來自'cp'找不到文件。相反,它可能來自未能找到可執行文件 - 這實際上是'su'而不是'cp'。 –

+0

@ChrisStratton無法找到可執行文件? – OJFord

+0

@ChrisStratton沒關係,你編輯英​​寸如何「幫助它找到」蘇'然後呢? – OJFord

回答

0

我張貼此作爲一個答案,因爲它解決了我的問題,我問它,所以應該解決這個問題的任何通過搜索發生這種情況。不過,對我而言,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\""}; 

所有的錯誤得到解決。我不能告訴你爲什麼,但至少他們是。

相關問題