创建SD卡图片副本到另一个目录?

时间:2013-10-29 22:26:35

标签: android

我能够获得我想要复制的图片的路径,并且能够从我想要复制的路径获取路径,但仍然无法找到复制它们的方法。 有什么建议吗?

private void copyPictureToFolder(String picturePath, String folderName)
            throws IOException {
        Log.d("debug", folderName);
        Log.d("debug", picturePath);

        try {
            FileInputStream fileInputStream = new FileInputStream(picturePath);
            FileOutputStream fileOutputStream = new FileOutputStream(folderName+"/");

            int bufferSize;
            byte[] bufffer = new byte[512];
            while ((bufferSize = fileInputStream.read(bufffer)) > 0) {
                fileOutputStream.write(bufffer, 0, bufferSize);
            }
            fileInputStream.close();
            fileOutputStream.close();
        } catch (Exception e) {
            Log.d("disaster","didnt work");
        }

    }

感谢。

1 个答案:

答案 0 :(得分:1)

您应该使用Commons-IO复制文件,我们是在2013年!没有人想要手动做到这一点。如果你真的想要那么你应该考虑一些事情:

  • 首先复制文件的循环,在每次迭代时复制buffer.length个字节。在您当前的代码中,您不必循环并将512字节的源图像复制到dest(无论源图像大小是多少)。
  • 处理上一次迭代并仅复制您所阅读的内容
  • 你的try / catch结构不正确,你应该添加一个finally close,总是关闭你的源文件和目标文件。在这里查看示例:what is the exact order of execution for try, catch and finally?

使用IOUtils,它会提供类似

的内容
try {
  IOUtils.copy( source, dest );
} finally {
  IOUtils.closeQuietly( source );
  IOUtils.closeQuietly( dest );
}

并且没有抓到任何东西,它会被转发给来电者。