wxWidgets wxFile 创建文件第一轮有效,使用覆盖标志创建第二轮失败并拒绝访问
wxWidgets wxFile create file first round works, creating second round with overwrite flag fails with Access Denied
我不明白为什么我总是收到 'Access Denied'。
我正在使用 wxWidgets 在 Windows 上的以下目录中创建一个文件:C:\Users\username\Documents\MyApp
。最初该文件不存在,它被创建并且一切都很好。第二次或多次执行此操作会导致错误: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:\Users\username\Documents\MyApp\myapp.2020-03-29.db
.
我也试过事先检查文件是否存在并使用wxRemoveFile(fileName)
,但这也会导致访问被拒绝错误...在记事本和记事本++中创建文件工作正常。
我错过了什么吗?我想不通,尤其是因为它是第一次创建文件。
去掉wxFile::Create(..., wxFile::read_write)
的第3个参数,可以取默认的wxS_DEFAULT
值。
第三个参数需要wxPosixPermissions
枚举类型的值或组合,不是wxFile::OpenMode
枚举类型。
我不明白为什么我总是收到 'Access Denied'。
我正在使用 wxWidgets 在 Windows 上的以下目录中创建一个文件:C:\Users\username\Documents\MyApp
。最初该文件不存在,它被创建并且一切都很好。第二次或多次执行此操作会导致错误: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:\Users\username\Documents\MyApp\myapp.2020-03-29.db
.
我也试过事先检查文件是否存在并使用wxRemoveFile(fileName)
,但这也会导致访问被拒绝错误...在记事本和记事本++中创建文件工作正常。
我错过了什么吗?我想不通,尤其是因为它是第一次创建文件。
去掉wxFile::Create(..., wxFile::read_write)
的第3个参数,可以取默认的wxS_DEFAULT
值。
第三个参数需要wxPosixPermissions
枚举类型的值或组合,不是wxFile::OpenMode
枚举类型。