2

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

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");
        }

    }

谢谢。

4

1 回答 1

1

您应该使用Commons-IO来复制文件,我们在 2013 年!没有人愿意手动执行此操作。如果你真的想要那么你应该考虑一些事情:

  • 首先是一个复制文件的循环,在每次迭代时复制 buffer.length 个字节。在您当前的代码中,您不会循环并将 512 字节的源图像复制到 dest(无论源图像大小如何)。
  • 照顾最后一次迭代,只复制你读过的东西
  • 您的 try/catch 结构不正确,您应该添加 finally close 以始终关闭源文件和目标文件。看这里的例子:try、catch 和 finally 的确切执行顺序是什么?

使用 IOUtils,它会给出类似的东西

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

并且不要捕获任何东西,它将被转发给调用者。

于 2013-10-29T22:43:08.613 回答