【问题标题】:What is fastest way for a .Net program to index all images on a user's computer?.Net 程序索引用户计算机上所有图像的最快方法是什么?
【发布时间】:2010-06-07 19:56:14
【问题描述】:

.Net 程序索引用户计算机上所有图像的最快方法是什么?

使用开源 .Net 库和原生 .Net 类。

在某种程度上适用于 XP sp3、...、Windows 7

  • 最快 - 相同的电脑配置,不同的时间(秒)

  • .Net 程序 - 更好的 C#

  • 索引 - 获取绝对链接列表(如 c://bla-bla/file )并将它们保存到文件中(index.txt)

  • 所有图片(如 JPEG、PNG、BMP)

【问题讨论】:

    标签: c# .net windows search image


    【解决方案1】:

    您必须使用Directory.GetFiles() 递归地进行扫描。

    您可以使用与磁盘(不是分区)一样多的线程进行优化。

    .NET 4 有一个新的“流”版本的 GetFiles(),它可以帮助减少内存使用。

    但在现代计算机上需要很长时间。全力以赴肯定会妨碍 PC 的正常使用,因此您可能希望比你可以做到的。

    【讨论】:

      【解决方案2】:

      索引所有图像的最快方法是使用现有索引。例如,Windows 搜索服务通过多个接口提供programmatic access to its index

      从 .NET 访问这些接口的最简单方法可能是Windows API Code Pack

      【讨论】:

      • 同意。索引不是微不足道的,因此谷歌、雅虎、微软和苹果聘请的博士来研究索引算法。很可能一个微不足道的Directory.GetFiles 会慢几个数量级。
      【解决方案3】:

      你可以使用 Lucene .NET 吗? http://incubator.apache.org/lucene.net/

      【讨论】:

      • 我真的不明白全文搜索引擎与在 PC 上生成图像文件索引有什么关系?特别是考虑到这是选定的答案,Lucene 肯定比我得到的更多?
      【解决方案4】:

      iterate over all the files;你真正的挑战是决定什么是图像。这可能像检查文件扩展名一样简单,也可能像打开文件和examining it 一样昂贵,例如file魔术。

      最后,您需要“watch”进行更改并保持您的设置为最新。

      这将受 IO 限制,主要取决于您是通过扩展决定图像还是检查其内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-27
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 2023-03-13
        相关资源
        最近更新 更多