在Windows上检查一个文件是否存在大小写敏感的好方法是什么?
我通过比较文件名与文件名目录中的所有文件条目来实现这一点。在C语言中有没有更有效的方法?
使用
WIN32_FIND_DATAA FindFileData;
HANDLE h = FindFirstFile(filenametocheck, &FindFileData);
现在FindFileData.cFileName
包含文件名,因为它存储在NTFS中。
你所需要做的就是比较filenametocheck
和FindFileData.cFileName
。
不要忘记用FindClose(h)
关闭h
手柄,并进行错误检查。
这只适用于检查当前目录,如果filenametocheck
包含路径(例如..somefile.txt
或C:\SomedirSomefile.txt
),您需要做更多的工作。
要了解更多细节,请阅读FindFirstFile
的文档,也可以查看这个示例。
请注意,这可能会导致注释中提到的TOCTOU错误,具体取决于您想要实现的目标。