如何从API 26开始保存/覆盖现有文件URI中的文件?

时间:2017-11-09 18:26:18

标签: java android database performance filesystems

所以我正在使用一个图像捕获库,它为我提供了一个临时缓存文件的URI。我想在我的应用程序的文件目录中将该文件保存为“/avatar.jpg”,覆盖任何现有的“avatar.jpg”文件。到目前为止,这是我尝试实现目标的代码:

File file = new File(tempImagePath);

File avatarFile = new File(getFilesDir(), "avatar.jpg");
file.renameTo(avatarFile);

但是,这不会覆盖任何现有的“avatar.jpg”文件。我注意到文件系统API的一些变化,例如FileProvider的引入,所以我不是最快/最有效的方法来完成我需要的东西。

1 个答案:

答案 0 :(得分:1)

我相信您可以检查目标文件是否存在,如果它存在则将其删除并将缓存的图像文件移动到所需的目的地。

// Check if file exists, and delete it.
File avatarFile = new File(getFilesDir(), "avatar.jpg");
if (avatarFile.exists())
    avatarFile.delete();

并阅读this answer有关如何将文件移动到所需目的地的信息。另外,阅读Java I/O lesson,那里有一些有用的教程。

P.S。:您还可以尝试get the Bitmap of the image file尝试保存为头像,并将其写入目标文件。请阅读this answer了解更多信息。