Qt file讀寫文件 +文件的信息,


關於文件的一些類及其關系:

 

 項目工程目錄:

mywidget.h:

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

namespace Ui {
class MyWidget;
}

class MyWidget : public QWidget
{
    Q_OBJECT

public:
    explicit MyWidget(QWidget *parent = 0);
    ~MyWidget();

private slots:
    void on_buttonRead_clicked();//這是轉到槽自動生成的

    void on_buttonWrite_clicked();//這是轉到槽自動生成的

private:
    Ui::MyWidget *ui;
};

#endif // MYWIDGET_H

 

 

 mywidget.cpp:

#include "mywidget.h"
#include "ui_mywidget.h"

#include <QFile>
#include <QFileDialog>

#include <QFileInfo>
#include <QDateTime>
#include <QDataStream>//這里是使用的二進制數據流,操作什么樣的文件都是可以的。
#include <QDebug>
MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);
}

MyWidget::~MyWidget()
{
    delete ui;
}

void MyWidget::on_buttonRead_clicked()
{
    QString path = QFileDialog::getOpenFileName(this,"open","../","TXT(*.txt)");

    if (path.isEmpty() == false)
    {
        //文件對象
        QFile file (path);

        //打開文件,只讀的方式
        bool isOk =file.open(QIODevice::ReadOnly);
        if (isOk)
        {
            #if 0//這里使用全部讀取
            //讀文件  默認只識別utf8編碼
            QByteArray array  = file.readAll();

            //顯示到編輯區
//            ui->textEdit->setText(QString(array));
            ui->textEdit->setText(array);
            #endif

            //這里使用一行一行的讀
            QByteArray array ;
            while (file.atEnd() == false)
            {
                //讀一行
                array += file.readLine();
            }
            ui->textEdit->setText(array);

        }

        //關閉文件
        file.close();

        //獲取文件信息
        QFileInfo  info(path);
        qDebug()<<"文件名字"<<info.fileName().toUtf8().data();
        qDebug()<<"文件后綴:"<<info.suffix();
        qDebug()<<"文件大小:"<<info.size();
        qDebug()<<"文件創建時間:"<<info.created().toString("yyyy-MM-dd hh:mm:ss");//想要2019-01-01 11:11:00的格式

    }
}


void MyWidget::on_buttonWrite_clicked()
{
    QString path  = QFileDialog::getSaveFileName(this,"save","../","TXT(*.txt)");
     if (path.isEmpty() == false)
     {
         //創建文件對象
         QFile file;
         //關聯文件名字
         file.setFileName(path);

         //打開文件,只寫方式
         bool isOk = file.open(QIODevice::WriteOnly);
         if (isOk)
         {
             //獲取編輯區內容
             QString str = ui->textEdit->toPlainText();
             //寫文件
//             //這里需要將QString轉化為QByteArray
//             file.write(str.toUtf8());

//             //QString -> C++標准的string ->char *
//             file.write(str.toStdString().data());


             //轉化為本地平台編碼
             file.write(str.toLocal8Bit());

             //QString轉化為QByteArray
             QString buf = "123";
             QByteArray a =buf.toUtf8();//中文,有中文的時候使用
             a = buf.toLocal8Bit();//本地編碼

             //QByteArray -> char *
             char *b = a.data();

             //在網絡編程中經常使用到char * ->  QString
             char *p = "abcd";
             QString  c = QString(p);

         }

         //關閉文件
        file.close();
     }
}

 

 

 ui:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM