【问题标题】:How to specify the directory for searching file all over the system如何指定全系统搜索文件的目录
【发布时间】:2013-09-08 12:50:59
【问题描述】:

我正在用 C++ 编写一个文件系统程序。现在我尝试编写一个文件查找功能。首先我希望程序能够在所有系统中搜索文件。我使用 FindFirstFile 和 FindNextFile Windows API 函数。首先我应该调用 FindFirstFile ,并给它一个目录,它必须在其中搜索文件。但我不知道,如何指定目录以便 FindFirstFile 在所有系统中搜索。 请帮我解决这个问题。我将非常感谢任何帮助。

【问题讨论】:

    标签: c++ windows


    【解决方案1】:

    这是我发现的here

    您不能在 lpFileName 输入字符串中使用尾部反斜杠 () 对于 FindFirstFile,因此如何搜索根目录可能并不明显 目录。如果您想查看文件或获取根的属性 目录,以下选项将适用: 检查文件 根目录,您可以使用"C:\*" 并通过 使用 FindNextFile。要获取根目录的属性,请使用 GetFileAttributes 函数。注意在字符串“\?\”之前添加 不允许访问根目录。

    要获取可用驱动器的列表,您可以使用GetLogicalDriveStrings()。这将返回一个以空结尾的字符串的双空结尾列表。例如,假设您的机器中有驱动器 A, BC。返回的字符串如下所示:

    A:\<nul>B:\<nul>C:\<nul><nul>
    

    https://stackoverflow.com/a/18573199/1141471

    【讨论】:

    • 谢谢你的回答,电脑。让我问你一个问题。据我了解,“C:\”是Windows系统中计算机的根目录?我说的对吗?
    • 是的。 Unix 完全抽象了这种树层次结构的性质,在 Unix 和类 Unix 系统中,根目录由 / 符号表示。尽管根目录通常称为 /,但目录条目本身没有名称——它的名称是初始目录分隔符 (/) 之前的“空”部分。所有文件系统条目,包括已挂载的文件系统,都是该根目录的“分支”。
    • 在 DOS、OS/2 和 Microsoft Windows 下,每个分区都有一个驱动器号分配(标记为 C:\ 表示特定的分​​区 C),并且在其之上没有公共根目录。 DOS、OS/2 和 Windows 确实支持更抽象的层次结构,分区可安装在另一个驱动器的目录中,尽管这种情况很少见。来自:en.wikipedia.org/wiki/Root_directory
    • 这足以解决您的问题还是您还有其他问题?
    • 说实话,我有一些问题,需要多花点时间。 :) 。因此,在 Windows 中没有公共目录。但是,当您转到 Start->search 时,Windows 如何在 MyComputer 中搜索文件?
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多