知识点
- QFile读写文件
- QFileInfo获取文件信息
- QDataStream读写文件
- QTextStream读写文件
- 内存文件QBuffer读写文件
结果演示
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_ReadButton_clicked();
void on_WriteButton_clicked();
void writeDate();
void readDate();
void writeDateTextStre();
void readDateTextStre();
void WriteReadBuffer();
private:
Ui::Widget *ui;
};
#endif
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QFile>
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>
#include <QDataStream>
#include <QTextStream>
#include <QBuffer>
#define cout qDebug() << "[" << __FILE__ <<":" << __LINE__ << "]"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
writeDate();
readDate();
writeDateTextStre();
readDateTextStre();
WriteReadBuffer();
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_ReadButton_clicked()
{
QString path=QFileDialog::getOpenFileName(this, tr("Open File"),
"../",
tr("Text files (*.txt);;Images (*.png *.xpm *.jpg)"));
if(!path.isEmpty()){
QFile file(path);
bool openOk=file.open(QIODevice::ReadOnly);
if(openOk){
#if 0
QByteArray array=file.readAll();
ui->textEdit->setText(array);
#endif
QByteArray array;
while(!file.atEnd()){
array+=file.readLine();
}
ui->textEdit->setText(array);
}
file.close();
}
QFileInfo FileDate(path);
qDebug()<<FileDate.exists();
if(FileDate.exists()){
qDebug() << "文件名字:" <<FileDate.fileName();
qDebug() << "文件大小:" << FileDate.size()<<"bit";
qDebug() << "文件创建时间:" <<FileDate.created().toString("yyyy-MM-dd hh:mm:ss");
}
}
void Widget::on_WriteButton_clicked()
{
QString path=QFileDialog::getSaveFileName(this, tr("Save File"),
"../",
tr("Text files (*.txt);;Images (*.png *.xpm *.jpg)"));
if(!path.isEmpty()){
QFile file(path);
bool openOk=file.open(QIODevice::WriteOnly);
if(openOk){
QString str=ui->textEdit->toPlainText();
QByteArray strArray=str.toUtf8();
file.write(str.toUtf8());
}
file.close();
}
}
void Widget::writeDate(){
QString path("../dateTxt.txt");
QFile file(path);
bool openOk=file.open(QIODevice::WriteOnly);
if(openOk){
QDataStream stream(&file);
stream<<QString("QDataStream 今年年龄:")<<26;
file.close();
}
}
void Widget::readDate(){
QString path("../dateTxt.txt");
QFile file(path);
bool openOk=file.open(QIODevice::ReadOnly);
if(openOk){
QDataStream stream(&file);
QString str;
int a;
stream>>str>>a;
cout << str.toUtf8().data() << a;
file.close();
}
}
void Widget::writeDateTextStre(){
QString path("../DemoTxt.txt");
QFile file(path);
bool openOk=file.open(QIODevice::WriteOnly);
if(openOk){
QTextStream stream(&file);
stream.setCodec("UTF-8");
stream<<QString("QTextStream 今年年龄:")<<26;
file.close();
}
}
void Widget::readDateTextStre(){
QString path("../DemoTxt.txt");
QFile file(path);
bool openOk=file.open(QIODevice::ReadOnly);
if(openOk){
QTextStream stream(&file);
stream.setCodec("UTF-8");
QByteArray str;
while(!file.atEnd()){
str+=file.readLine();
}
cout<<str;
file.close();
}
}
void Widget::WriteReadBuffer(){
QBuffer merbuffer;
merbuffer.open(QIODevice::WriteOnly);
QDataStream stream(&merbuffer);
stream<<QString("QBuffer 今年年龄:")<<26;
merbuffer.close();
merbuffer.open(QIODevice::ReadOnly);
QDataStream streamOut(&merbuffer);
QString str;
int a;
streamOut>>str>>a;
cout << str.toUtf8().data() << a;
merbuffer.close();
}