- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在创建文件之前使用 GetFileAttributes 检查是否存在,并向用户显示一个对话框(标准的“你想替换现有文件吗”)
if (GetFileAttributes(szFilePath) != 0xffffffff) { /* display "do you want to replace?"*/}
偶尔,它会为一个不可能可能存在的文件返回成功,因为它所在的文件夹刚被创建(使用CreateDirectory)。当它这样做时,它返回的属性只是 FILE_ATTRIBUTE_ARCHIVE。
知道发生了什么吗?
编辑:为了回应没完没了的“你应该改用 INVALID_FILE_ATTRIBUTES”系列,我已经这样做了。
DWORD dwFile = GetFileAttributes(szFilePath);
if (dwFile != INVALID_FILE_ATTRIBUTES) { /* display "do you want to replace?"*/}
我得到了相同的结果。对于不存在的文件,dwFile 作为 FILE_ATTRIBUTE_ARCHIVE 返回。我很确定它不存在。该文件夹刚刚创建。我没有使用 GetTempFileName()。我可以从调试器复制 szFilePath 并使用资源管理器和命令行访问该文件夹,它们都不会将文件显示为已存在。
最佳答案
好的,事实证明这是 DOS 的遗留问题。具体的文件名很重要。假设 c:\aux.c 在您的系统上不存在,并且您有一个“C”驱动器,下面的代码行将重现该问题。 (我最初遇到这种行为是在一棵树的深处,但这是一个很好的最小案例。)
DWORD dwFile = GetFileAttributes(TEXT("C:\\aux.c"));
这与 SuperUser 上的这个问题有关 Why does this file apparently not exist when attempting to delete it?某些文件名受到保护,即使该文件实际上并不存在,并且从未存在过。
CON, PRN, AUX, CLOCK$, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7、LPT8 和 LPT9。
这些都是 protected ,如果您遇到试图在 Windows 上编辑/创建/删除它们的情况,可能会导致问题。
关于c++ - GetFileAttributes 为不存在的文件返回 FILE_ATTRIBUTE_ARCHIVE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31329394/
#include "stdafx.h" #include #include int _tmain(int argc, _TCHAR* argv[]) { DWORD d = GetFile
这个问题在这里已经有了答案: Where can I use & and == when comparing constants? What is the difference? (3 个答案) 关
对 C:/pagefile.sys 等文件调用 GetFileAttributes 会返回 INVALID_FILE_ATTRIBUTES,GetLastError 返回 ERROR_SHARING_
为什么会出现以下情况: GetFileAttributes(L"D:"); 返回 0x00002010,但在完全相同的机器上执行以下操作: GetFileAttributes(L"\\\\?\\D:"
我在创建文件之前使用 GetFileAttributes 检查是否存在,并向用户显示一个对话框(标准的“你想替换现有文件吗”) if (GetFileAttributes(szFilePath) !=
我对这段代码的行为感到困惑。 const char* file_name = "/ /"; auto attributes = GetFileAttributes(TEXT(file_name));
我正在测试远程共享(在 Windows 服务器上)中是否存在文件。用于测试的底层函数是 WinAPI 的 GetFileAttributes,发生的情况是该函数在各种情况下可能会花费过多的时间(几十秒
我注意到多年来出现了几次的问题,并且似乎在我们当前版本的 Windows 7 下经常发生。 当我使用::GetFileAttributes(filename) 测试文件是否存在时,我经常返回 INVA
我正在尝试构建一种方法来查看文件是否存在。当前的方法不是完整的形式。我想弄清楚为什么它不像代码那样工作。 BOOL FileExists(LPCTSTR szPath) {
我在 FASM 中使用 GetFileAttributesA 来确定文件是否存在。我知道如果文件不存在,返回值将为 INVALID_FILE_ATTRIBUTES,但我不确定如何检查此值。 我的代码:
我是一名优秀的程序员,十分优秀!