2012-05-18 79 views
3

我試圖以編程方式將文件從Android內部存儲器移至SD卡中的現有目錄。
我試過兩種方法。 在第一個我用File.renameTo:以編程方式將文件從緩存目錄移至SDCard

String destName = externalDirPath + File.separatorChar + destFileName; 
File originFile = new File(cacheDirPath + File.separatorChar + originalfileName); 

originFile.renameTo(new File(destName)); 

在我使用的調用Runtime.getRuntime()其他:

Process p = Runtime.getRuntime().exec("/system/bin/sh -"); 
DataOutputStream os = new DataOutputStream(p.getOutputStream()); 

String command = "cp " + cacheDirPath + "/" + originalfileName+ " " + externalDirPath + "/" + destFileName+ "\n"; 

os.writeBytes(command); 

與他們兩個不工作..

任何建議?

+0

不要嘗試使用'cp',因爲它甚至不存在於股票設備上,並且運行時執行的東西沒有官方支持。如何從android java中複製文件已經在這裏被覆蓋了很多次,我們不需要另一個問題。 –

+0

嗨丹尼,我想複製手機內存的所有內容到SD卡。你可以給我一些關於這個問題的代碼。 – 2012-06-19 04:00:43

+0

親愛的@Naseerkhan,我是按照MacGyver的建議做的,將輸入文件的內容複製到'byte []'中,然後將其寫入輸出文件。例如,您可以看到: 'public static void copy(File src,File dst)throws IOException InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dst); //將字節從in傳輸到out byte [] buf = new byte [1024]; int len; ((len = in.read(buf))> 0){out.write(buf,0,len); } in.close(); out.close(); }' –

回答

5

據​​Android的API參考,

兩個路徑在相同的安裝點。在Android上,嘗試在 內部存儲和SD卡之間複製時,最有可能遇到此限制的應用程序是 。

你可能需要閱讀Filebyte[],然後將其寫入到一個新的FileThis answer涵蓋它。

+0

謝謝,我沒有注意到這個限制.. –

+0

好尖 - 複製文件並刪除舊的 - 解決了問題 – benchuk

+0

我真的不知道這個限制。你是偉大的人..非常感謝。 – Smeet

相關問題