我必须从文件列表中清除不存在的文件。那些状态不确定的人应被警告,但仍留在清单上。听起来很简单。但是,我试图解决的C函数似乎在文件是否真的不存在或文件是否存在之间没有给出可靠的答案。驻留在当前无法访问的网络共享上(例如由于网络问题)。
stat函数将errno设置为ENOENT(如果无法访问该文件),因此与实际上不存在的文件没有区别。
在某些情况下,当无法访问网络共享时,FindFirstFile将最后一个错误(可通过GetLastError()获得)设置为ERROR_PATH_NOT_FOUND。
是的,我知道FindFirstFile用于读取目录,但是我认为可以通过设置的错误代码来推断出我需要知道的内容。
另外,在某些情况下,如果网络驱动器无法访问,则GetFileAttributes似乎会将上一个错误设置为ERROR_PATH_NOT_FOUND。
最佳答案
如果网络共享不可用,CreateFile
会将LastError设置为0x35(找不到网络路径),如果共享可用,则将LastError设置为0x2(系统找不到指定的路径),但是文件不存在