首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用QFile直接写入磁盘

无法使用QFile直接写入磁盘
EN

Stack Overflow用户
提问于 2016-04-23 06:03:44
回答 1查看 285关注 0票数 0

我有一个直接写入磁盘的问题,我正在尝试写一个旧的PARTCOPY的Qt版本(现在在与16位不兼容的系统上已经过时)

我使用的是Windows10,并将我的程序提升为管理员权限。

每次我尝试在QIODevice::WriteOnly中打开"\.\A:“时,我都会收到一条错误消息”该参数不正确“。

使用Visual Studio分步调试,我想我已经发现在尝试执行CreateFile()QFSEnginePrivate::nativeOpen()中出现了问题。

这行代码:

代码语言:javascript
运行
复制
// WriteOnly can create files, ReadOnly cannot.
DWORD creationDisp = (openMode & QIODevice::WriteOnly) ? OPEN_ALWAYS : OPEN_EXISTING;

似乎就是原因。如果我强制将creationDisp的值设置为OPEN_EXISTING,那么我就可以打开文件,并且可以向磁盘写入数据,而不会再有任何问题。问题是,我不知道在不使用调试器的情况下,我可以用什么方法让它工作。

有人找到解决这个问题的办法了吗?

更新:(测试用例)

代码语言:javascript
运行
复制
#include <QtCore/qcoreapplication.h>
#include <QtCore/qtextstream.h>
#include <QtCore/qfile.h>

int main(int argc, char **argv) {
    QCoreApplication a(argc, argv);

    QTextStream cout(stdout, QIODevice::WriteOnly);

    QFile f("\\\\.\\A:");
    if (!f.open(QIODevice::WriteOnly)) {
        cout << f.errorString();
        return -1;
    }

    return 0;
}
EN

Stack Overflow用户

发布于 2019-01-05 21:23:15

你可以尝试这两个函数,我用(1)写得很成功。

  1. bool QFile::open(FILE *fh, OpenMode mode, FileHandleFlags handleFlags = DontCloseHandle)
  2. bool QFile::open(int fd, OpenMode mode, FileHandleFlags handleFlags = DontCloseHandle)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36804001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档