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:

 

posted @ 2019-07-06 11:21  Mr_Song_D  阅读(8696)  评论(0编辑  收藏  举报