Qt--文件操作

在Qt中对于文件操作,利用一个例子讲明白,就说通过按钮选择一个文件并将其内容打开到文本框中,注意:需要包含对应的头文件方可执行

读文件的方式:

首先要得到这个要打开的文件的路径,先默认打开的界面是桌面,选择路径时需要判断是否选中,这个通过isEmpty这个函数进行判断,若没有选中则进行提示,这个利用QMessageBox进行提示。

但要注意的是,默认打开txt的编码格式为utf-8,否则无法打开。

 

    //点击按钮 弹出对话框,选择文件
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        QString filePath = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\Administrator\\Desktop");
        qDebug()<<filePath;

        if(filePath.isEmpty())
        {
            QMessageBox::warning(this,"警告","文件路径不能为空");
            return;

        }
        else
        {
            //将文件路径放入到 lineEdit中
            ui->lineEdit->setText(filePath);

            //将文件内容读取到 textEdit中
            QFile file(filePath);

            //指定打开方式
            file.open(QIODevice::ReadOnly);

            //Qt默认支持格式是utf-8
            QByteArray array;

            ui->textEdit->setText(array);
            file.close();

        }

若不是utf-8的格式,也可以通过更改编码格式的方式,正确打开改文件,以gbk格式为例,同时打开方式也可以按行打开,通过atEnd函数来判断是否到了文件尾。但此时也就无法打开utf-8格式的文本了,所以需要通过if-else语句来选择何种编码格式,对应何种打开方式,而编码方式可以取出文本的第一个字符来看看进行判断。

            //文本编码格式类
            QTextCodec * codec = QTextCodec::codecForName("gbk");
            //将文件内容读取到 textEdit中
            QFile file(filePath);

            //指定打开方式
            file.open(QIODevice::ReadOnly);

            QByteArray array;
            //array = file.readAll();

            array = file.readLine();

            while(!file.atEnd())
            {
                array += file.readLine();
            }


            ui->textEdit->setText( codec->toUnicode(array) );
            file.close();

写文件的方式:

主要是通过append进行追加文本,否则将会替换打开文本中的内容

           写文件
           file.open(QIODevice::Append);//追加的方式写文件
           file.write("啊啊啊");
           file.close();

读取文本的信息:

其中最为重要的是suffix函数,它可以得到文件的后缀名,通过判断后缀名来选择打开的文件的方式。

            //读取文件
            QFileInfo info(filePath);

            qDebug()<<"文件的后缀名:"<<info.suffix()<<"文件大小"<<info.size();

            qDebug()<<"创建日期:"<<info.created().toString("yyyy-MM-dd hh:mm:ss");

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值