【发布时间】:2021-12-03 15:37:43
【问题描述】:
在 Windows 上用 C 语言检查文件是否存在区分大小写的好方法是什么?
我通过将文件名与文件名目录中的所有文件条目进行比较来实现这一点。 C中有更有效的方法吗?
【问题讨论】:
-
查看FindFirstFile函数。
-
为什么?这样做你几乎肯定会成为creating a TOCTOU bug。执行任何动作 X 以查看其他动作 Y 是否有效是一个坏主意。仅仅因为 X 在您尝试它的确切时间工作,这并不意味着 Y 将在以后工作。因此,当您稍后尝试执行 Y 时,您仍然必须编写所有最初不执行 X 时会编写的错误处理代码。因为 X 不是 Y,所以它们不一样,并且不同的规则适用于不同的操作。
-
Windows 文件系统不区分大小写,所以...我不确定您是否可以这样做。
-
如果文件所在的文件系统不区分大小写,那么名为“ASDF”的文件就是名为“asdf”的文件.
-
@AndrewHenle yes on Windows "ASDF" 是文件名为“asdf”,但出于某种原因(有效与否,我们不知道细节)OP需要知道文件是否以精确的大小写存在。
标签: c windows winapi case-sensitive