【问题标题】:How to make a fast query to the file system?如何快速查询文件系统?
【发布时间】:2009-02-18 16:46:40
【问题描述】:

我正在尝试查询远程计算机上的文件系统,以获取特定目录中的文件名列表。

到目前为止,我在 .NET 中使用 DirectoryInfo 类。像这样的:

DirectoryInfo dir = new DirectoryInfo("c:\dir");
FileInfo[] files = dir.GetFiles("*.*");

但此查询平均在 20/30 秒内得到答复。有时会持续 50 秒。那太多了。我想优化它。经过一番谷歌搜索后,我发现这可以用 WMI 完成。但我没有取得任何成功。我收到诸如“RPC 服务器不可用”之类的错误,并且我无权更改该计算机中的权限或服务。

有没有人有其他想法?

【问题讨论】:

    标签: c# wmi filesystems


    【解决方案1】:

    您不会通过网络获得更快的性能。您正在应对网络延迟,以及正在发生的影响远程机器性能的任何事情(例如,磁盘 io 或高 CPU 使用率)。

    【讨论】:

    • 除非它是一个非常大的文件夹,只需要几秒钟:肯定少于 10 个,而不是他抱怨的 20-30+。如果它是一个非常大的文件夹,那么可能。
    • 问题不在网络上。就像乔尔说的那样,这是一个非常大的文件夹,并且机器被返回特定目录的文件名的 Web 服务超载。我想在查询文件系统时优化 Web 服务(它不在文件所在的同一台机器上)
    【解决方案2】:

    在远程机器上运行的 WCF 服务怎么样?这可能需要一个请求,然后返回一个带有文件夹和文件对象图的批量数据传输对象。

    我很欣赏这可能不适合您的架构,但如果您可以控制这两种环境,这可能是一个前进的方向?

    【讨论】:

    • 这是个好主意,但我无法控制远程机器:(
    • 很公平,反正它有点偏左。无论如何,可能对将来浏览 StackOverflow 的人有用。
    猜你喜欢
    • 2010-09-08
    • 2010-11-02
    • 2010-09-20
    • 2014-01-19
    • 2014-05-06
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多