2014-10-02 237 views
0

我的代碼:Runtime.getRuntime()。exec:爲什麼命令«cp»不起作用?

File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
File src = new File(dir, "test.dat"); 
File dst = new File(dir, "test_2.dat"); 

if (src.exists()) 
{ 
    try 
    { 
     Process process = Runtime.getRuntime().exec(new String[] {"cp", "-f", src.getAbsolutePath(), dst.getAbsolutePath()}); 
     process.waitFor(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (InterruptedException e) 
    { 
     e.printStackTrace(); 
    } 
} 

此代碼對三星Galaxy S3(複製文件),但對亞馬遜Kindle Fire無法正常工作:

產生java.io.IOException:錯誤運行的exec() 。命令:[CP,-f, /mnt/sdcard/Download/test.dat,/mnt/sdcard/Download/test_2.dat] 工作目錄:空環境:空

爲什麼會出現這種情況?以及如何在所有設備上執行該命令副本?

+0

定義「作品」。它應該做什麼? – 2014-10-02 09:09:57

+0

你是什麼意思? (「works」) – 2014-10-02 09:15:35

回答

0

一般來說,它不會工作,因爲android應用程序沒有權限來訪問下載目錄。或者也許是因爲它無法訪問/ bin/cp。它會工作,如果你根植你的手機,我認爲。請從adb shell提示中嘗試相同的操作,以便您瞭解它爲什麼不起作用。

+0

/system/bin/sh:cp:not found – 2014-10-02 09:26:28

+0

解決了命令「dd」的問題:Runtime.getRuntime()。exec(new String [] {「dd」,「if =」+ src .getAbsolutePath(),「of =」+ dst.getAbsolutePath()}) – 2014-10-02 10:00:58

0

我有一個類似的問題,更換bootanimation.zip,這是我如何解決它。希望它有助於某人。

Runtime.getRuntime().exec("mount -o remount,rw system /system"); 
Runtime.getRuntime().exec("cp /storage/emulated/0/bootanimation/bootanimation.zip /system/media/bootanimation.zip"); 
Runtime.getRuntime().exec("chmod 644 /system/media/bootanimation.zip"); 
Runtime.getRuntime().exec("mount -o remount,ro system /system"); 
相關問題