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我们就可以写相应的代码了

    

代码
namespace ConsoleApplicationNPOI
{
    
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 这个链接学习到更多的功能。

posted on 2010-01-31 18:39  流星陨落  阅读(2620)  评论(5编辑  收藏  举报