【发布时间】:2013-06-03 18:45:54
【问题描述】:
Delphi:如何递归超过 255 个字符的路径并读取文件属性
我正在编写一个控制台应用程序,需要遍历路径远大于 255 个字符的目录结构,然后读取其中文件的属性。
从历史上看,我从 2006 年开始使用 Turbo Delphi 使用递归和 FindFirst,但这似乎跳过了超过 255 个字符的路径。
我可以将 FindFirst() 函数换成其他函数吗?还是我必须采取不同的方法?
【问题讨论】:
-
这是Delphi - How to check if a file exists path over 255 characters 的副本,但它询问的是
FileExists而不是属性。不过,基本问题和它的答案是一样的。 -
@KenWhite 这个问题与属性无关。它们可以从
WIN32_FIND_DATAW结构中读出。问题仅仅是对FindFirstFile的调用,它需要摆脱 260 个字符的限制。 -
@David:您对上一个问题的回答也涵盖了所有这些内容,包括
Naming Files链接和提到的 A/W 版本。这有什么不同? -
@KenWhite 我不认为这有很大不同。主要区别在于,在另一个问题中,它是一个简单的前置 `\\?` 的情况。但是在这里您需要这样做,并使用 Win32 查找文件 API 而不是 RTL 包装器。这是一个额外的复杂层。所以我想强调前缀的确切位置,并指出结构中路径中的 260 个限制不是问题,因为名称是相对于其包含目录的名称。所以,它几乎相同,需要相同的知识,基本上相同的解决方案,但我认为答案会有所帮助。
-
@Ken 另一个问题没有谈到 FindFirst,所以我在这里的大部分答案都不相关。
标签: delphi winapi delphi-2006