QQ2009的图片文件保存方式

QQ2008和以前的版本里,在QQ的主目录下,会按照号码生成用户目录,在用户目录下又会生成image和CustomFaceRecv两个目录。一个是用来保存图片,这个是说的截图和发送图片的这类图片。CustomFaceRecv下保存的则是别人发的自定义表情。时间一久,这两个目录下的图片会多的可怕。而且都是堆在一个目录下的。一个活跃的QQ群里的图片会无法计数,还有一个是可怕的自定义表情。对于我这种加了不少QQ群的人来说,简直是噩梦!

有清理QQ垃圾的人都有这经验,打开这两个文件夹的时候速度会慢到可怕,explorer进程经常在这里卡死。因为单文件夹里文件数量超过1000,打开将消耗相当多的系统资源,这也是为什么现在很多主机限制单文件夹文件数量的原因。

QQ2009的机制换了,图片不再是放到这两个文件夹下,而是生成Image目录和CustomFaceRecv.db文件。因为没有合适的工具打开这两个文件,但基本上可以估计出来,应该是使用的类似sqlite机制的方法存储图片的吧,把图片压缩进来,并按照一定的方式组织。这个方法有一定的好处,首先是避免了打开文件夹是因为文件数量过多而造成explorer进程的崩溃。还有就是可能因为它有一定的压缩机制,让文件占用空间会更小。

但这样做同时带来了一个新的问题。这个文件会在你的QQ收到新的图片或者新的自定义表情的时候,不停的进行写入操作。有些杀毒软件默认会对文件进行修改过后也进行扫描。这样QQ挂着的时候不停接受这些图片,会让杀毒软件不停的进行扫描,影响机器速度。还有就是这两个文件会随时使用日积月累越来越大,扫描一次,或者QQ本身读取和解析它所花费的时间也会越来越多。这方法思路很好,但实际效果值得商讨。而且用户清理垃圾图片文件变得极为不易。

其实并不需要这种文件压缩的方式。如果按照过去QQ2008和之前版本的做法,图片不压缩到一个文件里也是可以的。只要在image和 CustomFaceRecv目录下新建子目录,诸如image/年/月/日/*这样的做法,让每天或者每月接受的图片存到一个新目录里面去,把image文件目录细分,这样就算再大的量,也不会出现在打开explorer进程的时候崩溃。如果你开了缩略图,可能会有些影响速度,但总比过去要好的多。按时间或者其他方法进行子目录的创建,也会让QQ在寻找这些图片的时候(比如查看聊天记录时)检索速度更快。

用户删除垃圾文件也很简单。进入image或者CustomFaceRecv目录,寻找需要删除的月份或者天数,直接全选删除就好。

同样,QQ2009也可以使用该方法。比如每周新建一个db文件。这次是2009-3.db,存储了这一个月的图片。到下个月的时候换2009-4.db,如此,也不会让文件体积过大了。

如果让用户可以自己选择存储这些文件的方式,那就更好了。

目前使用QQ2009发现的主要问题就是,软件使用久了之后就会出现响应慢、无相应等。主要的原因我估计还是出在存储的数据读取处理上。 就拿我的QQ来说

我的聊天记录文件 

CustomFaceRecv.db文件就有154M,Msg2.0.db有190M,在进行聊天记录搜索的时候,经常会卡半天才会有结果。现在我们唯一能做的,就是定时删除临时图片目录:

\Tencent\QQ2009\Users\你的QQ号码\Image

\Tencent\QQ2009\Users\你的QQ号码\CustomFaceRecv.db

另外今天以外发现,原来Users下的所有.db 文件都可以使用7-ZIP来打开并解压,不过无法直接在7-zip中进行删除操作,会出现如下提示

等待着高人写出压缩/封装软件出现的那一天。

QQ2009,需要走的路还很长很长。

QQ2009的图片文件保存方式》上有4个想法

发表回复