QFile。设备未打开。

4

我遇到了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() 检查两个文件是否已打开。作为第二步,我将检查它们的位置。 - user8024280
我需要在哪里写 fileN.isOpen()?
Qt 已经说 file1 没有被打开。
另外,我只是写了 QFile file1("file1.dat");
我想说我没有创建 file1.dat。
- sardorkun
4
在所展示的代码中,如果 file1.open(...) 失败,你仍然会继续尝试使用 file1.readAll() 读取它。 - G.M.
2
你期望什么?文件无法打开 - 可能不存在。 - Kuba hasn't forgotten Monica
1个回答

3

尝试以读写模式打开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"); - sardorkun
我需要在哪里创建file1.dat文件? - sardorkun
如果它已经被创建了,我在哪里可以找到file1.dat文件? - sardorkun
看一下QT QDir文档,像QDir::currentPath()这样的方法可能会很有用。然后只需使用qDebug()打印文件创建的文件夹即可。但首先我会查看可执行文件所在的文件夹。(根据操作系统可能会有所不同) - user8024280
请问您能帮我解决另一个问题吗?它与SDK平台有关。我已经提过这个问题了。 - sardorkun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接