c++ - 无法让 ReadFile 从我刚刚写入的文件中读取

标签 c++ windows

我正在使用 WriteFile 写入文件。那很好用。它只是一个简单的字符串:

"Test string, testing windows functions".

我现在尝试从文件中读取并与我写入的字符串进行比较,以确保其正常工作。我有:

DWORD dwBytesRead;
char buff[128];
ReadFile(hFile, buff, 128, &dwBytesRead, NULL)

但它对我来说返回错误。 hFile 是我写入文件时使用的句柄。对可能发生的事情有任何想法吗?

编辑(根据评论更新):

我从 GetLastError() 得到了 E_ACCESSDENIED。这是我如何得到 hFile:

hFile = CreateFile (TEXT(movedFileName.c_str()),
                    GENERIC_WRITE,
                    0,
                    NULL,
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,
                    NULL);

最佳答案

hFile 仅针对 GENERIC_WRITE 打开。如果您想从中读取并写入它,则需要使用 GENERIC_READ 打开它:

hFile = CreateFile (TEXT(movedFileName.c_str()),
                    GENERIC_WRITE | GENERIC_READ,
                    0,
                    NULL,
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,
                    NULL);

关于c++ - 无法让 ReadFile 从我刚刚写入的文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179910/

相关文章:

c++ - 不能使用 if constexpr

c++ - 在 qt 中的 if 中对不同的进度条使用连接和断开连接

c++ - Windows 服务生成的进程运行速度比 GUI 生成的进程慢 3 到 4 倍

windows - 为什么我们需要cmake?

windows - Windows Git-bash运行docker.sock

c++ - C++后端服务的Web界面

c++ - c++ - 如何让客户端在将数据写入管道之前检查服务器是否完成了从管道的读取操作

java - JBoss 在 Windows 上运行良好吗?

windows - 可执行文件如何在父 CMD 或批处理上下文中设置环境变量?

c++ - 用于高性能应用程序的多线程日志记录