wxWidgets wxFile创建文件第一轮有效,使用覆盖标志创建第二轮失败,访问被拒绝



我不明白为什么我一直收到"拒绝访问"。

我使用wxWidgets在Windows上的以下目录中创建一个文件:C:UsersusernameDocumentsMyApp。最初,该文件不存在,创建后一切正常。这样做一秒钟或更长时间会导致错误:error 5: Access Denied。甚至在以管理员身份运行应用程序时也会发生这种情况。。。

有问题的文件是sqlite3数据库文件的备份,备份可以在一天内运行多次,因此可能会覆盖以前的文件。文件名会附加今天的日期。

文件的创建如下:

bool DatabaseBackup::CreateBackupFile(const wxString& fileName)
{
wxFile file;
bool success = file.Create(fileName, true, wxFile::read_write);
if (!success) {
pLogger->error("Failed to create file {0}", fileName.ToStdString());
}
file.Close();
return success;
}

还有另一个函数,它附加日期并将完整路径附加到文件名,因此结果如下:C:UsersusernameDocumentsMyAppmyapp.2020-03-29.db

我也尝试过预先检查文件是否存在并使用wxRemoveFile(fileName),但这也会导致访问被拒绝错误。。。在Notepad和Notepad++中创建文件效果良好。

我是不是错过了什么?我想不通,尤其是因为它是第一次创建文件。

删除wxFile::Create(..., wxFile::read_write)的第三个参数,这样它就可以取默认的wxS_DEFAULT值。

第三个参数需要wxPosixPermissions枚举类型的值或组合,wxFile::OpenMode枚举类型的而不是

最新更新