19. Qfile ファイルの読み取りおよび書き込み操作

1. ファイルの読み込み

ボタンをクリックしてpushButtonファイル ダイアログ ボックスに入り、ファイルを選択します。上のlineEditボックスにはファイル パスが保存され、下のボックスにはtextEditファイルの内容が保存されます。

1.1. utf-8 ファイルの読み取り (デフォルト)

方法:

  • ファイルを開くダイアログのパス—getOpenFileName();
  • ファイルを読み取る——file();
  • ファイルを開く方法——open();
  • ファイルを読み取る——readAll();
  • ダイアログテキストの設定—setText();
  • ファイルを閉じてください——close();
 //点击选取文件按钮,弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        QString path = QFileDialog::getOpenFileName(this,"打开文件","F:\\Study\\Qt\\Projects\\13_Qt_QFile");
        //将路径放入到lineEdit中
        ui->lineEdit->setText(path);

        //读取内容,放入到 textEdit中
        //QFile默认的支持格式是 utf-8
        QFile file(path);//参数就是读取文件的路径
        //设置打开方式
        file.open(QIODevice::ReadOnly);

        QByteArray array = file.readAll();

        //将读取到的数据 放入textEdit中7
        ui->textEdit->setText(array);

        //对文件对象进行关闭
        file.close();

効果は次のとおりです。

1.2. 他の種類のファイル (gbk など) を読み取る

utf-8の読み込みをベースに、エンコード形式のクラスを追加します。

        //编码格式类
        QTextCodec *codec = QTextCodec::codecForName("gbk");

次に、テキストが書き込まれる配列を gbk に設定します。

        ui->textEdit->setText(codec->toUnicode(array));

最終的なコードは次のとおりです。

    //点击选取文件按钮,弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        QString path = QFileDialog::getOpenFileName(this,"打开文件","F:\\Study\\Qt\\Projects\\13_Qt_QFile");
        //将路径放入到lineEdit中
        ui->lineEdit->setText(path);

        //编码格式类
        QTextCodec *codec = QTextCodec::codecForName("gbk");

        //读取内容,放入到 textEdit中
        //QFile默认的支持格式是 utf-8
        QFile file(path);//参数就是读取文件的路径
        //设置打开方式
        file.open(QIODevice::ReadOnly);

        QByteArray array;
        while(!file.atEnd()){
             array += file.readLine();//按行读
        }

        //将读取到的数据 放入textEdit中7
        ui->textEdit->setText(codec->toUnicode(array));

        //对文件对象进行关闭
        file.close();

効果は次のとおりです。

ファイルが gbk 形式で正常に開かれたことがわかります。


2. ファイル書き込み

ファイルの末尾にテキストを追加するだけです

        //进行写文件
        file.open(QIODevice::Append);//用追加的方式写
        file.write("啊啊啊啊啊");
        file.close();

効果は次のとおりです。

追加が成功したことがわかります (これは複数回実行したためです)


3. ファイル情報の表示

ファイルのコンテンツを取得することに加えて、ファイルの特定の情報も表示したいので、QFileInfoファイル情報クラスを通じてこれを行うことができます。

  • ファイルサイズ - size();
  • ファイル拡張子--suffix();
  • ファイル名 - fileName();
  • ファイルパス - filePath();
  • ファイル作成日 -birthTime();
  • ファイルが最後に変更された日付 -lastModified();
        //QFileInfo文件信息类
        QFileInfo info(path);

        qDebug()<<"大小"<<info.size()<<"后缀名"<<info.suffix()<<"文件名称"<<info.fileName()<<"文件路径"<<info.filePath();
        qDebug()<<"创建日期"<<info.birthTime().toString("yyyy/MM/dd hh:mm:ss");
        qDebug()<<"最后修改日期"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");

効果は次のとおりです。

補充:

  • ファイル情報に関するその他の機能については、Qt Assistant を参照してください。

  • 純粋な日付表示を得るには日付を変換する必要があります。そうしないと、他の追加情報が表示されます。日付の具体的な表示形式は自分で設定できますyyyy-MM-dd hh:mm:ssQtアシスタントを参照してください。

4. 関連プログラムファイルの参照

13_Qt_Qファイル.zip

おすすめ

転載: blog.csdn.net/qq_63388834/article/details/135166304