gpt4 book ai didi

java - 即使 file.delete() 返回 true,文件也不会被删除

转载 作者:行者123 更新时间:2023-12-01 11:01:38 24 4
gpt4 key购买 nike

我有一个允许用户拍照的 Activity ,onActivityResult() 将在缓存目录中创建一个临时文件来存储它,然后再将其上传到服务器。

这就是我开始 Intent 的方式:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CODE_CAMERA);

这是onActivityResult中的代码:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {

if (requestCode == REQUEST_CODE_CAMERA) {
try {
Bitmap photo = (Bitmap) data.getExtras().get("data");

File photoFile = new File(getActivity().getCacheDir(), "userprofilepic_temp.jpg");

boolean b = false;
if(photoFile.isFile()){
b = photoFile.delete();
}
b = photoFile.createNewFile(); //saves the file in the cache dir, TODO delete this file after account creation
userPhotoFilePath = photoFile.getAbsolutePath();

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 90, bytes);

FileOutputStream fos = new FileOutputStream(photoFile);
fos.write(bytes.toByteArray());
fos.close();

displayUserPhoto(photoFile);

} catch (IOException e) {
e.printStackTrace();
}


}
else if (requestCode == REQUEST_CODE_PHOTO_LIBRARY) {

}

}
}

displayUserPhoto 只是一个简单的 Glide 调用:

@Override
public void displayUserPhoto(File photoFile) {
Glide.with(this)
.load(photoFile)
.into(userPhotoView);
}

由于我想在用户决定重新拍摄照片时覆盖上一张照片,因此我检查 photoFile 是否是一个文件。如果是的话我就删除它。然后创建一个新文件。

问题是它总是返回相同的初始图片。即使我调用 .delete(),该文件也永远不会被删除。

由于我使用应用程序的缓存目录,因此我不需要写入权限,但以防万一我尝试包含该权限,但它仍然不起作用。

编辑:在下面添加完整流程

最佳答案

我真的不知道在这里该怎么做,因为答案与我最初想象的完全不同,所以它与问题无关。

Glide 不仅在内存中保存缓存,还在磁盘上保存缓存,这就是为什么我不断得到相同的图像。

解决方案很简单:

Glide.with(this)
.load(photoFile)
.skipMemoryCache(true)//this
.diskCacheStrategy(DiskCacheStrategy.NONE)//and this
.into(userPhotoView);

关于java - 即使 file.delete() 返回 true,文件也不会被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com