为什么手机中照片修改或删除后,还能在手机数据相册中看到原来的内容?

xiesongque 2014-06-06 12:39:07
今天用了这段代码去修改了一张图片的内容,在XP的文件管理器中打开此图片时,已无法预览图片。
可是,为什么用手机相册查看时,还能看到原图?是不是读的缓存?要怎么样清除对应图片文件的缓存文件?
public void UpdatePhoto(String photoPath) throws IOException
{

String tmpMsg = String.valueOf((Math.random() + 1) * 1000000);
try
{
// File tmp = File.createTempFile("tmp", null);
// tmp.deleteOnExit();

RandomAccessFile raf = new RandomAccessFile(photoPath, "rw");
long rafLeng = raf.length();
int tmpMsgLeng = tmpMsg.length();
// 创建一个临时文件来保存插入点后的数据
// FileOutputStream tmpOut = new FileOutputStream(tmp);
// FileInputStream tmpIn = new FileInputStream(tmp);

// ----------下面代码插入内容----------
// 把文件记录指针定位到0位置
for (long i = 0; i < rafLeng / tmpMsgLeng - 1; i++)
{
raf.seek(i * tmpMsgLeng);
// 追加需要插入的内容
raf.write(tmpMsg.getBytes());
}
raf.close();
}
}

在手机卡上找到个文件夹:Android\data\com.cooliris.media\cache\hires-image-cache,
这里竟然能找到以前所有被删除掉的照片,这时什么情况?
而且其文件名都是数字,请问原文件名与这个文件夹里对应的文件名如果联系起来?
如果能有办法联系起来,就可以用代码来删除里面对应的文件了。
...全文
1933 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiesongque 2014-06-09
  • 打赏
  • 举报
回复
引用 4 楼 coxfilur_2008 的回复:
/** * The mini thumb id. * <P>Type: INTEGER</P> */ public static final String MINI_THUMB_MAGIC = "mini_thumb_magic"; 这个就是你要删除的缓存。
查了,照片的mini_thumb_magic的值在Android\data\com.cooliris.media\cache\hires-image-cache目录中找不到对应的文件!
coxfilur_2008 2014-06-09
  • 打赏
  • 举报
回复
用ContentResolver查询,删除应该也可以。
coxfilur_2008 2014-06-09
  • 打赏
  • 举报
回复
/** * The mini thumb id. * <P>Type: INTEGER</P> */ public static final String MINI_THUMB_MAGIC = "mini_thumb_magic"; 这个就是你要删除的缓存。
coxfilur_2008 2014-06-09
  • 打赏
  • 举报
回复
有缓存。 缓存的是图片缩略图 public static final class Images { public interface ImageColumns extends MediaColumns { /** * The description of the image * <P>Type: TEXT</P> */ public static final String DESCRIPTION = "description"; /** * The picasa id of the image * <P>Type: TEXT</P> */ public static final String PICASA_ID = "picasa_id"; /** * Whether the video should be published as public or private * <P>Type: INTEGER</P> */ public static final String IS_PRIVATE = "isprivate"; /** * The latitude where the image was captured. * <P>Type: DOUBLE</P> */ public static final String LATITUDE = "latitude"; /** * The longitude where the image was captured. * <P>Type: DOUBLE</P> */ public static final String LONGITUDE = "longitude"; /** * The date & time that the image was taken in units * of milliseconds since jan 1, 1970. * <P>Type: INTEGER</P> */ public static final String DATE_TAKEN = "datetaken"; /** * The orientation for the image expressed as degrees. * Only degrees 0, 90, 180, 270 will work. * <P>Type: INTEGER</P> */ public static final String ORIENTATION = "orientation"; /** * The mini thumb id. * <P>Type: INTEGER</P> */ public static final String MINI_THUMB_MAGIC = "mini_thumb_magic"; /** * The bucket id of the image. This is a read-only property that * is automatically computed from the DATA column. * <P>Type: TEXT</P> */ public static final String BUCKET_ID = "bucket_id"; /** * The bucket display name of the image. This is a read-only property that * is automatically computed from the DATA column. * <P>Type: TEXT</P> */ public static final String BUCKET_DISPLAY_NAME = "bucket_display_name"; }
xiesongque 2014-06-09
  • 打赏
  • 举报
回复
有哪位知道的给指点一下啊?
xiesongque 2014-06-09
  • 打赏
  • 举报
回复
引用 8 楼 coxfilur_2008 的回复:
final int indexOfData = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA); ... String data = imageCursor.getString(indexOfData); 这个是你要删的文件路径。
好,我再来研究一下。 先谢谢了!
xiesongque 2014-06-09
  • 打赏
  • 举报
回复
不好意思,没看懂,还是不知道怎么弄。
coxfilur_2008 2014-06-09
  • 打赏
  • 举报
回复
final int indexOfData = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA); ... String data = imageCursor.getString(indexOfData); 这个是你要删的文件路径。
coxfilur_2008 2014-06-09
  • 打赏
  • 举报
回复
查询demo如下,删除应该类似: private void retrieveByUri(final Context context, Uri uri, final HashMap<String, ArrayList<String>> result, final HashMap<String, String> bucketIdToName, final boolean initialScan) { String pictureCols[] = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME }; Cursor imageCursor = context.getContentResolver().query(uri, pictureCols, null, null, null); if (imageCursor == null) { // this really happens! return; } if (!imageCursor.moveToFirst()) { imageCursor.close(); return; } if (imageCursor.getColumnCount() != pictureCols.length) { log("cursor columns not expected."); } final int indexOfData = imageCursor.getColumnIndex(MediaStore.Images.Media.DATA); final int indexOfBucketId = imageCursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID); final int indexOfBucketDisplayName = imageCursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); try { do { String data = imageCursor.getString(indexOfData); String bucketId = imageCursor.getString(indexOfBucketId); String displayName = imageCursor.getString(indexOfBucketDisplayName); if (!bucketIdToName.containsKey(bucketId)) { bucketIdToName.put(bucketId, displayName); } ArrayList<String> values = result.get(bucketId); if (values == null) { values = new ArrayList<String>(); result.put(bucketId, values); } values.add(data); } while (imageCursor.moveToNext()); } finally { imageCursor.close(); } }
十三邵 2014-06-06
  • 打赏
  • 举报
回复
在手机卡上找到个文件夹:Android\data\com.cooliris.media\cache\hires-image-cache, 这里竟然能找到以前所有被删除掉的照片,这时什么情况? 而且其文件名都是数字,请问原文件名与这个文件夹里对应的文件名如果联系起来? 如果能有办法联系起来,就可以用代码来删除里面对应的文件了。 我也不会,帮你顶一下吧。。。
小米云相册助手是一款专门针对小米手机相册照片存储传输的软件。软件相册可以实现手机在电脑上传输文件,并且可以支持文件批量上传下载,让相册照片存储传输变得方便快捷。使用小米云相册助手速度更快,传输更稳定,支持全win系统。在线管理和存储您的照片等各种数据,并同步到您的各个手机设备之上,还可以查找您的手机位置并锁定内容。软件界面美观简洁、简单全面、实用方便,无需培训,即可快速上手,轻轻松松完成日常相册照片存储传输功能,真正做到简单全面实用。是用户实现相册照片存储传输功能的好帮手。 小米云相册助手的安装   把下载好的安装包解压到当前文件夹,之后双击【MicPCHelper_Installer_1.1.9.exe】运行文件进行安装,打开的时候会出现安装框,依次开始安装,依照步骤点击下一步,并选择同意协议和软件安装位置即可。     点击【关闭】按钮,小米云相册助手软件安装过程就完成了。 小米云相册助手的使用   安装完成后,点击【小米云相册助手】快捷方式即可进入小米云相册助手软件。如图所示,这是软件的登录界面,用户可以使用邮箱账号、手机号或是小米ID登录软件。     如图所示,这是软件的主界面,用户进入软件后可以点击软件按钮来实现自己所需要的各种相册照片存储传输功能。软件的功能就大致介绍到这里了,软件其余的具体功能就有小伙伴们自己去发掘吧。 小米云相册助手的卸载   依次选择开始-> 所有程序 ->小米云相册助手 ->卸载小米云相册助手。 或者依次打开我的电脑->卸载或更改程序->卸载你所卸载的软件,您可以用 Window XP控制面板的添加或删除程序功能,或用 Windows Vista、Windows 7的程序和功能删除小米云相册助手, 然后点击开始卸载,按步骤依次点击下一步,直至完成。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧