【问题标题】:QFile. Device not openQ文件。设备未打开
【发布时间】:2018-07-22 16:06:31
【问题描述】:

QFile 有问题。

QFile file1("file1.dat");
QFile file2("file2.dat");

if(file2.exists())
{

}

if(!file1.open(QIODevice::ReadOnly))
{
    qDebug() << "Ошибка открытия для чтения";
}

if(!file2.open(QIODevice::WriteOnly))
{
    qDebug() << "Ошибка открытия для записи";
}

QByteArray block = file1.readAll();
file2.write(block);
file1.close();
file2.close();

错误:

QIODevice::read (QFile, "file1.dat"): device not open

【问题讨论】:

  • 尝试使用fileN.isOpen() 检查这两个文件,以确保它们已打开。第二步,我将检查他们的位置。
  • 我需要在哪里写 fileN.isOpen()? Qt 已经说 file1 没有打开。我也刚刚写了 QFile file1("file1.dat");我想说我没有创建file1.dat
  • 在显示的代码中,如果file1.open(...) 失败,您仍然继续尝试使用file1.readAll() 从中读取。
  • 你期待什么?文件无法打开 - 可能不存在。

标签: c++ qt qfile


【解决方案1】:

尝试以读写模式打开file1.dat:

if(!file1.open(QIODevice::ReadWrite))
{
    qDebug() << "Ошибка открытия";
}

因为如果你打开它只是为了阅读,如果它不存在则无法创建,或者先手动创建。

如果那个文件没有打开,你什么都没有做,所以只是为了确保首先检查两个文件是否都打开了:

if(file1.isOpen() && file2.isOpen()){
    QByteArray block = file1.readAll();
    file2.write(block);
    file1.close();
    file2.close();
}

【讨论】:

  • 可行吗? QFile File("/Users/Sardorkun/Destkop/File.txt");
  • 我还需要在哪里创建file1.dat?
  • 如果它被创建了,我在哪里可以找到file1.dat?
  • 查看 QDir 的 QT 文档,QDir::currentPath() 或类似的方法可能很有用。然后只需使用qDebug() 打印创建文件的文件夹。但首先我会查看可执行文件所在的文件夹。 (可能因操作系统而异)
  • 请你帮我解决我的其他问题?它关于sdk平台。这个问题我已经问过了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 2015-02-16
相关资源
最近更新 更多