thumbs.dll 是xp系统下的缩略图的文件(因为用的是windows7,找了半天也没有看到这个文件,所以猜测在WIN7中也许用的别的文件方式存储),一般存放在图片目录下,之所以说是另类读取,因为我们用的是一个开源组件叫做NPOI组件(园子里的人应该都知道吧),这个是tony qu和另外两个人写的一个组件,主要是用于对excel文件的操作,前几天用这个组件写了一个文件抓取的工具,感觉用下来比较轻松,关键点就是不用做数据连接,直接文件操作,这样给我们带来了很大的方便。还是回归正题吧,之所以我们可以用NPOI来操作thumbs.dll 是因为它是OLE2文档。我们可以先用POIFS Browser这个开源工具来判断当前这个文件是否是OLE2文档。
由这个工具我们可以看到thumbs.dll是一个标准的OLE2文件,这样我们就可以通过NPOI来读取这个文件,首先我们要先从NOPI这个地址下载最新的DLL,然后我们使用的工具是VS2008 SP1。
1.我们先引用4个DLL:
2.引用好相应的DLL我们就可以写相应的代码了
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
{
class Program
{
static void Main( string [] args)
{
using (var stream = File.OpenRead( " F:\\未整理\\Thumbs.db " ))
{
POIFSFileSystem _currentFileSystem = new POIFSFileSystem(stream);
DirectoryNode node = _currentFileSystem.Root;
var entries = node.Entries;
DocumentNode en;
string s = string .Empty;
while (entries.MoveNext())
{
en = entries.Current as DocumentNode;
var viewableArray = en.Document.ViewableArray;
s += viewableArray.GetValue( 0 ).ToString();
break ;
}
Console.Write(s);
Console.ReadLine();
}
}
}
}
3.让我们看看运行的结果:
4.从运行结果我们知道缩略图应该是以JFIF格式存储的,JFIF是图片的存储格式之一,由JPEG演变而来。至于怎么将JFIF格式转为JPEG,我们将在后续为大家呈现。
从代码我们可以发现,只是简单的几个调用,我们就可以将文件的输出流都出来,不过NPOI的功能远远不止于此,它的功能更为强大,我只是用到了其中的小小一部分。如果你想更为深入的了解,可以通过http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html 这个链接学习到更多的功能。