qt5--文件操作
阅读原文时间:2023年07月13日阅读:2

文本文件的读写操作:

#include "win.h"
#include "ui_win.h"
#include
#include
#include
#include //文件类
#include //编码类

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("\\r\\n我是李明");  
       file.close();  
    }

});

}

Win::~Win()
{
delete ui;
}

文件信息:

#include "win.h"
#include "ui_win.h"
#include
#include
#include
#include //文件信息类
#include

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
#include
#include
#include //文本流
#include
#include //数据流

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;
}