文本文件的读写操作:
#include "win.h" #include "ui_win.h" #include <QDebug> #include <QFileDialog> #include <QMessageBox> #include <QFile> //文件类 #include <QTextCodec> //编码类 Win::Win(QWidget *parent) : QWidget(parent), ui(new Ui::Win) { ui->setupUi(this); setWindowTitle("文件操作"); connect(ui->pushButton,&QPushButton::clicked,[=](){ QString file_name=QFileDialog::getOpenFileName(this,"请选择需要打开的文件:","D:\sss","*.txt"); if(file_name.isEmpty()){ QMessageBox::warning(this,"警告:","路径为空"); }else{ ui->lineEdit->setText(file_name); QTextCodec* code=QTextCodec::codecForName("gbk"); //编码格式 QFile file(file_name); //创建文件对象 //参数:文件全路径 file.open(QIODevice::ReadOnly); //打开文件--不读文件内容 //参数:文件模式。Qt助手搜索QIODevice::OpenModeFlag //QIODevice::ReadOnly 只读 QByteArray t; //t =file.readAll(); //读取所有剩余数据 //从设备读取所有剩余数据,并将其作为字节数组返回 //返回值:字节数组 //使用readAll函数后文件指针达到文件末尾 while (!file.atEnd()) { //file.atEnd() 指针在文件尾就返回true t+=file.readLine(); //读取一行 } ui->textEdit->setText(t); //默认UTF-8格式,原文件是UTF-8格式不用赚 //ui->textEdit->setText(code->toUnicode(t)); //code->toUnicode(t) 原文件是ANSI格式,所以转成gbk编码格式 //在简体中文windows系统下,ANSI编码代表GBK/GB2312编码 file.close();//关闭文件 file.open(QIODevice::Append); //追加写模式 //Append 在文件尾添加,保留原文件内容 //WriteOnly 原文件内容被删除 file.write(" 我是李明"); file.close(); } }); } Win::~Win() { delete ui; }
文件信息:
#include "win.h" #include "ui_win.h" #include <QDebug> #include <QFileDialog> #include <QMessageBox> #include <QFileInfo> //文件信息类 #include <QDateTime> Win::Win(QWidget *parent) : QWidget(parent), ui(new Ui::Win) { ui->setupUi(this); setWindowTitle("文件操作"); connect(ui->pushButton,&QPushButton::clicked,[=](){ QString file_name=QFileDialog::getOpenFileName(this,"请选择需要打开的文件:","D:\sss","*.txt"); if(file_name.isEmpty()){ QMessageBox::warning(this,"警告:","路径为空"); }else{ ui->lineEdit->setText(file_name); QFileInfo info(file_name); //获取指定文件的信息 //参数:文件全路径 qDebug()<<"文件路径:"<<info.filePath(); //info.filePath() 返回文件全路径---"D:/sss/sss.txt" qDebug()<<"文件名称:"<<info.fileName(); //info.fileName() 返回文件名称-- "sss.txt" qDebug()<<"文件大小:"<<info.size();//文件大小--单位:字节 qDebug()<<"文件后缀名:"<<info.suffix(); //后缀名---"txt" qDebug()<<"文件创建日期:"<<info.created().toString("yyyy-M-d h:m:s"); //info.created() 返回创建日期,返回值:QDateTime qDebug()<<"文件修改日期:"<<info.lastModified().toString("yyyy-M-d h:m:s");//修改日期 } }); } Win::~Win() { delete ui; }
其它信息:Qt助手搜索 QFileInfo
文件流:
#include "win.h" #include "ui_win.h" #include <QDebug> #include <QFileDialog> #include <QMessageBox> #include <QTextStream> //文本流 #include <QFile> #include <QDataStream> //数据流 Win::Win(QWidget *parent) : QWidget(parent), ui(new Ui::Win) { ui->setupUi(this); setWindowTitle("文本流和数据流"); connect(ui->pushButton,&QPushButton::clicked,[=](){ QString file_name=QFileDialog::getOpenFileName(this,"请选择需要打开的文件:","D:\sss","*.txt"); if(file_name.isEmpty()){ QMessageBox::warning(this,"警告:","路径为空"); }else{ ui->lineEdit->setText(file_name); //*****文本流*********** //QFile file(file_name); //file.open(QIODevice::WriteOnly); //QTextStream textstream(&file); //textstream<<QString("我是李明 ")<<12345678; //写入文本 //file.close(); //file.open(QIODevice::ReadOnly); QString str; //textstream>>str; //读取文本到str //遇到空格就结束读取 //str=textstream.readAll(); //读取剩余的全部数据 qDebug()<<str; //file.close(); //*********数据流---二进制方式************** QFile file(file_name); //file.open(QIODevice::WriteOnly); QDataStream datastream(&file); //datastream<<QString("我是李明 ")<<12345678; //写入文本 //file.close(); file.open(QIODevice::ReadOnly); datastream>>str;//读取文本块到str qDebug()<<str; int num; datastream>>num;//读取整数块到num qDebug()<<num; file.close(); } }); } Win::~Win() { delete ui; }