将文件(图像)从CacheDir复制到SD卡

我希望能够从Android设备的内部缓存移动或复制文件,并将其放入SD卡的永久存储中。 这是我到目前为止:

public void onClickSaveSecret(View v){ File image = new File(getApplication().getCacheDir() + "/image.png"); File newImage = new File(Environment.getExternalStorageDirectory() + "/image.png"); Toast.makeText(this, "Image Saved", 100).show(); } 

 /** * copy file from source to destination * * @param src source * @param dst destination * @throws java.io.IOException in case of any problems */ void copyFile(File src, File dst) throws IOException { FileChannel inChannel = new FileInputStream(src).getChannel(); FileChannel outChannel = new FileOutputStream(dst).getChannel(); try { inChannel.transferTo(0, inChannel.size(), outChannel); } finally { if (inChannel != null) inChannel.close(); if (outChannel != null) outChannel.close(); } } 

试试这个方法

 /** * @param sourceLocation like this /mnt/sdcard/XXXX/XXXXX/15838e85-066d-4738-a243-76c461cd8b01.jpg * @param destLocation /mnt/sdcard/XXXX/XXXXX/15838e85-066d-4738-a243-76c461cd8b01.jpg * @return true if successful copy file and false othrerwise * * set this permissions in your application WRITE_EXTERNAL_STORAGE ,READ_EXTERNAL_STORAGE * */ public static boolean copyFile(String sourceLocation, String destLocation) { try { File sd = Environment.getExternalStorageDirectory(); if(sd.canWrite()){ File source=new File(sourceLocation); File dest=new File(destLocation); if(!dest.exists()){ dest.createNewFile(); } if(source.exists()){ InputStream src=new FileInputStream(source); OutputStream dst=new FileOutputStream(dest); // Copy the bits from instream to outstream byte[] buf = new byte[1024]; int len; while ((len = src.read(buf)) > 0) { dst.write(buf, 0, len); } src.close(); dst.close(); } } return true; } catch (Exception ex) { ex.printStackTrace(); return false; } } 

有关更多信息,请访问AndroidGuide