Qt --Qfile使用

QT下载地址:https://download.qt.io/archive/qt/5.15/
打开文件,读取

#include "widget.h"
#include "ui_widget.h"
#include<QFile>
#include<QFileDialog>
#include<QFileInfo> //文件信息
#include<QDateTime> //必须要这个头文件。输出时见
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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


void Widget::on_pushButton_clicked()
{
    QString path = QFileDialog::getOpenFileName(this,
                  "open","../","TXT(*.txt)");

    if(path.isEmpty() == false)
    {
        QFile file(path);
        bool isOk = file.open(QIODevice::ReadOnly);

        if(isOk == true)
        {
            QString arr;
            while(!file.atEnd())
            {
               arr +=  QString(file.readLine());

            }

            ui->textEdit->setText(arr);
        }
        file.close();//读取完了关闭
          QFileInfo info(path);
        qDebug() <<"文件名"<<info.fileName();
         qDebug() <<"文件后缀"<<info.suffix();
          qDebug() <<"文件大小"<<info.fileName();
           qDebug() <<"创建文件时间"<<
                info.created().toString("yyyy-MM-dd hh:mm:ss");
    }



}

void Widget::on_pushButton_2_clicked()
{
    //!获取文件名
   QString filename =  QFileDialog::getOpenFileName(this,"save","../","TXT(*txt)");
    //! 判断文件名是否为空
    if(filename.isEmpty() == false)
    {
        //!不为空则创建对象
        QFile file;
        //!指定文件名
        file.setFileName(filename);
        //! 打开文件
        bool isOk = file.open(QIODevice::WriteOnly);
        if(isOk==true)
        {
            //! 获取编辑框内容
            QString str = ui->textEdit->toPlainText();
            //! 写文件
            //! QString -> QByteArray  @1
            file.write(str.toUtf8());
            //! @2 QString->c++ string ->char*
            //! 通过c++进行中转,在用data()
//            file.write(str.toStdString().data());

//            file.write(str.toLocal8Bit());//转回window本地编码


            //!QString->QByteAray
//            QString buf = "123";
//            QByteArray a = buf.toUtf8(); //中国文
//            a = buf.toLocal8Bit();//转回本地编码

            //!QByteArray->char*
//            char* b = a.data();


        }

        file.close();
    }
}

注意:
toUtf8()意思是转化为字符数组QByteArray,toUtf8.data()才是转化成char*;
QString->QByteArray : toUtf8();
QByteArray->QString: QString();

可以使用QDateTime按格式输出时间info.created().toString(“yyyy-MM-dd hh:mm:ss”);

Qt中,`QFile::move`是一个用于移动文件的方法,它允许你在保持文件结构完整性的情况下,将一个文件从一个路径移动到另一个路径。这个函数会尝试将源文件的内容复制到新的位置,然后删除原来的文件。 使用`QFile::move`的基本步骤如下: 1. 首先,你需要创建一个`QFile`对象并初始化它,传入你想要移动的源文件的完整路径。 ```cpp QFile source("原始文件路径"); ``` 2. 确保源文件存在并且可以访问。如果不存在,`exists()`函数会返回`false`。 ```cpp if (!source.exists()) { qDebug() << "源文件不存在."; return; // 或者处理错误 } ``` 3. 创建一个新的`QFile`对象,指定你想要移动到的新位置。注意这里需要的是完整的目的地文件路径,不是目录。 ```cpp QFile destination("目标文件新路径"); ``` 4. 检查目的地路径是否存在并创建必要的目录,如果需要的话。 ```cpp QDir destDir(destination.path()); if (!destDir.exists()) { if (!destDir.mkpath(destDir.absolutePath())) { qDebug() << "无法创建目标目录."; } } ``` 5. 调用`QFile::move()`方法尝试移动文件。如果移动成功,此函数会返回`true`;否则返回`false`。 ```cpp if (source.move(destination.fileName())) { qDebug() << "文件已成功移动."; } else { qDebug() << "文件移动失败."; } ``` 请注意,在移动过程中,如果目标文件已经存在,`move()`可能会覆盖原有的内容,除非在移动前先备份目标文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值