【Qt】文件系统

文章目录

  • 文件系统
  • 文件操作
  • 案例:显示路径到标题框,显示内容到文本框
    • 对文件进行写操作
    • 获取文件相关信息

文件系统

Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力,下面是 I/O 设备的类图:

【Qt】文件系统_第1张图片

  • QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口
  • QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现
  • QFlie:访问本地文件或者嵌入资源;
  • QTemporaryFile:创建和访问本地文件系统的临时文件;
  • QBuffer:读写QbyteArray, 内存文件;
  • QProcess:运行外部程序,处理进程间通讯;
  • QAbstractSocket:所有套接字类的父类;
  • QTcpSocket:TCP协议网络数据传输;
  • QUdpSocket:传输 UDP 报文;
  • QSslSocket:使用 SSL/TLS 传输数据;

文件操作

QFile提供了从文件中读取和写入数据的能力,通常会将文件路径作为参数传给QFile的构造函数,也可以在创建好对象最后,使用setFileName()来修改。可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice类提供的read()、readLine()、readAll()以及write()这样的函数

注意:有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取


案例:显示路径到标题框,显示内容到文本框

【Qt】文件系统_第2张图片

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //点击选取文件按钮 弹出文件对话框
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        //弹出文件对话框 第一个参数:父类指针 第二个参数:对话框标题 第三个参数:默认路径
        QString file_path =QFileDialog::getOpenFileName(this,"打开文件","Z:");
        //将选取的文件路径放入到lineEdit中 =>放到文本框当中
        ui->lineEdit->setText(file_path);
        //将文件的内容读取到textEdit当中
        QFile file(file_path); //参数:需要文件的路径
        file.open(QIODevice::ReadOnly);//指定打开方式

        //方法1:一次读取所有的内容
        //QByteArray array = file.readAll();
        //ui->textEdit->setText(array);//将读取到的数据 放入textEdit中

        //方法2:按行读取
        QByteArray array;
        while( !file.atEnd())
        {
            array += file.readLine(); //按行读  追加到array
        }
        ui->textEdit->setText(array);//将读取到的数据 放入textEdit中

        //关闭文件对象
        file.close();
    });
}

【Qt】文件系统_第3张图片

对文件进行写操作

file.open(QIODevice::Append); //用追加方式进行写
file.write("啊啊啊啊啊");
file.close();

获取文件相关信息

//QFileInfo 文件信息类
QFileInfo info(file_path);
//size返回的是字节数
qDebug() << "大小:" << info.size() << " 后缀名:" << info.suffix() << " 文件名称:"<<info.fileName() << " 文件路径:"<< info.filePath();
qDebug() << "创建日期:" << info.created().toString("yyyy/MM/dd hh:mm:ss");
qDebug() << "最后修改日期:"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");

你可能感兴趣的:(Qt,qt,命令模式,开发语言)