zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    Linux中查找当前目录下占用空间最大的前10个文件
    Redis的优势和特点
    java中final,finally,finalize三个关键字的区别
    消息队列介绍
    Redis的应用场景
    Spring中@Autowired注解与@Resource注解的区别
    多版本并发控制(MVCC)
    Linux查看CPU和内存使用情况
    进程调度算法
    一致性Hash算法
  • 原文地址:https://www.cnblogs.com/liming19680104/p/11615396.html
Copyright © 2011-2022 走看看