如何解决使用 MediaStore Api 检查重复文件
我有一个以 byte[]
形式下载文件的应用。该文件可以是图像、文档或 pdf。但是,当我使用 MediaStore
api 将文件保存到我的 android 设备中时,如果该文件之前已经存在(即已经下载),那么它会在文件末尾附加一个 (1) 并保存它。无论如何要检查重复项,以便我可以防止它保存文件?
我的代码如下:
OutputStream outputStream;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver resolver = context.getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Downloads.DISPLAY_NAME,"SampleFile" + fileNumber + "." + extension);
Log.d("debugsave","display name : " + contentValues.get(MediaStore.Downloads.DISPLAY_NAME).toString());
contentValues.put(MediaStore.Downloads.MIME_TYPE,"image/jpg");
contentValues.put(MediaStore.Downloads.RELATIVE_PATH,JOBSEEKER_DIR + "/JobId_" + jobId);
Log.d("debugsave","relative path: " + contentValues.get(MediaStore.Downloads.RELATIVE_PATH).toString());
Uri uri = resolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI,contentValues);
Log.d("debugsave","after insert : " + contentValues.get(MediaStore.Downloads.DISPLAY_NAME).toString());
Log.d("debugsave","uri " + uri.toString());
outputStream = resolver.openOutputStream(uri);
Log.d("debugsave","after resolver : " + resolver.getType(uri));
} else {
String imageDir = Environment.getExternalStoragePublicDirectory(JOBSEEKER_DIR).toString();
File image = new File(imageDir,"SampleFile" + fileNumber + "." + extension);
outputStream = new FileOutputStream(image);
}
if (isImage) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data,data.length);
bitmap.compress(Bitmap.CompressFormat.PNG,100,outputStream);
} else {
outputStream.write(data);
}
outputStream.close();
我尝试从内容值中调试一些值,但我似乎无法找到文件名更改的位置和 (1) 被附加的位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。