9.Qt中的文件管理QFile类

Qt中的文件管理QFile类

1、QFile的构造函数

QFile()	
QFile(const QString &name)//传入指定文件名的字符串
QFile(QObject *parent)	 //通过一个文件类创建
QFile(const QString &name, QObject *parent)//传入指定文件名的字符串与文件类

2、使用QFile进行数据读取

  • QFileDialog::getOpenFileName:用于弹出系统的文件夹目录进行选取
  • tr("Open File"):设置文件打开的title
  • tr("Text (*.txt)"):设置读取文件的类型
  • file.open(QIODevice::ReadWrite | QIODevice::Text):需要设置文件打开并设置读写权限
  • QTextStream:使用一个缓冲流读取,提高读取效率
  • in.atEnd():判断是否是最后一行
  • file.close():读取完关闭文件流
void Widget::on_btnOpen_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                    "E:/codeData/EmbeddedSoftwareCode/QT-code",
                                                    tr("Text (*.txt)"));
    qDebug() << fileName;
    //读取之前先清空之前的内容
    ui->textEdit->clear();
    file.setFileName(fileName);
    //设置读取权限
    if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
    {
        qDebug() << "File open ERROR";
        return;
    }
    this->setWindowTitle(fileName+"-MyNote");
    QTextStream in(&file);
    //in.setCodec("UTF-8");
    in.setCodec(ui->comboBox->currentText().toStdString().c_str());
    while (!in.atEnd()) {//in.atEnd()判断是否是最后一行
        QString context = in.readLine();//按行读取
        ui->textEdit->append(context);//显示到上面
    }
    //文件操作完需要关闭
    file.close();
}

3.使用QFile进行保存数据

  • QFileDialog::getSaveFileName:用于弹出系统的文件夹目录进行保存
  • tr("SaveFile"):设置文件打开的title
  • tr("Text (*.txt)"):设置保存文件的类型
  • file.open(QIODevice::WriteOnly | QIODevice::Text):需要设置写入权限
  • file.seek(0):重置定义光标的位置
  • QTextStream out(&file):使用缓冲流写入
  • out << context:往文件写入内容
void Widget::on_btnSave_clicked()
{
    qDebug() << "exits:"<<file.exists();
    if(!file.isOpen())
    {
        QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                                    "E:/codeData/EmbeddedSoftwareCode/QT-code/untitled.txt",
                                    tr("Text (*.txt)"));
          qDebug()<< fileName;
       file.setFileName(fileName);
       if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
       {
           qDebug() << "File open ERROR";
           return;
       }
       this->setWindowTitle(fileName+"-MyNote");
    }

    QTextStream out(&file);
    out.setCodec(ui->comboBox->currentText().toStdString().c_str());
    //out.setCodec("UTF-8");
    QString context = ui->textEdit->toPlainText();//读取到
    file.seek(0);
    out << context;

    //文件操作完需要关闭
    file.close();
}
posted @ 2025-05-09 11:58  站着说话不腰疼  阅读(72)  评论(0)    收藏  举报