QFile
#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(); private: Ui::Widget *ui; }; #endif // WIDGET_H
#include "widget.h" #include "ui_widget.h" #include <QFileDialog> #include <QFileInfo> #include <QDateTime> #include <QDebug> #include <QDataStream> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::on_readButton_clicked() { QString path = QFileDialog::getOpenFileName(this, "open", "../", "TXT(*.txt)"); if(path.isEmpty() == false) { QFile file(path); bool isOK = file.open(QIODevice::ReadOnly); if(isOK == true) { #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(); qDebug()<<info.suffix(); qDebug()<<info.size(); qDebug()<<info.created().toString("yyyy-MM-dd hh:mm:ss"); } } void Widget::on_writeButton_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 == true) { QString str = ui->textEdit->toPlainText(); file.write(str.toUtf8()); //file.write((str.toStdString().data())); } file.close(); } }
QDataStream
#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(); void writeData(); void readData(); private: Ui::Widget *ui; }; #endif // WIDGET_H
#include "widget.h" #include "ui_widget.h" #include <QDataStream> #include <QTextStream> #include <QFile> #include <QDebug> #define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); writeData(); readData(); } Widget::~Widget() { delete ui; } void Widget::writeData() { QFile file("../fff.txt"); bool isOK = file.open(QIODevice::WriteOnly); if (true == isOK) { //创建数据流,和file文件关联 //往数据流中写数据,相当于往文件里写数据 QDataStream stream(&file); stream<<QString("hello world")<<250; } file.close(); } void Widget::readData() { QFile file("../fff.txt"); bool isOK = file.open(QIODevice::ReadOnly); if (true == isOK) { //创建数据流,和file文件关联 //往数据流中读数据,相当于往文件里写数据 QString str; int a; QDataStream stream(&file); stream>>str>>a; cout<<str<<a; } file.close(); }
QTextStream
#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(); void writeData(); void readData(); private slots: void on_pushButton_clicked(); private: Ui::Widget *ui; }; #endif // WIDGET_H
#include "widget.h" #include "ui_widget.h" #include <QFile> #include <QTextStream> #include <QDebug> #include <QFileDialog> #define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); writeData(); readData(); } Widget::~Widget() { delete ui; } void Widget::writeData() { QFile file; file.setFileName("../demo.txt"); bool isOK = file.open(QIODevice::WriteOnly); if(true == isOK) { QTextStream stream(&file); //指定编码 stream.setCodec("UTF-8"); stream << QString("hello world")<<250; file.close(); } } void Widget::readData() { //这么读有问题 QFile file; file.setFileName("../demo.txt"); bool isOK = file.open(QIODevice::ReadOnly); if(true == isOK) { QTextStream stream(&file); //指定编码 stream.setCodec("UTF-8"); QString str; int a; stream >>str>>a; cout<<str<<a; file.close(); } } void Widget::on_pushButton_clicked() { QString path = QFileDialog::getOpenFileName(this, "read", "../" ); if(false == path.isEmpty()) { QFile file; file.setFileName(path); bool isOK = file.open(QIODevice::ReadOnly); if(true == isOK) { QTextStream stream(&file); stream.setCodec("UTF-8"); QString str = stream.readAll(); ui->textEdit->setText(str); file.close(); } } }
QBuffer
#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: Ui::Widget *ui; }; #endif // WIDGET_H
#include "widget.h" #include "ui_widget.h" #include <QBuffer>//内存文件 #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); QBuffer memFile; memFile.open(QIODevice::WriteOnly); memFile.write("hello"); memFile.write("world"); memFile.close(); qDebug()<<memFile.buffer(); QBuffer memFile1; memFile1.open(QIODevice::WriteOnly); QDataStream stream(&memFile1); stream<<QString("测试")<<250; memFile1.close(); qDebug()<<QString(memFile.buffer()).toUtf8().data();//输出有问题 //输出正确 memFile1.open(QIODevice::ReadOnly); QDataStream in(&memFile1); QString str; int a; in>>str>>a; memFile1.close(); qDebug()<<str.toUtf8().data()<<a; } Widget::~Widget() { delete ui; }