关于文件的一些类及其关系:
项目工程目录:
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: