關於文件的一些類及其關系:
項目工程目錄:
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: