qt5--文件操作

文本文件的读写操作: 

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

原文地址:https://www.cnblogs.com/liming19680104/p/11615396.html