• 文件操作QFile和QDataStream


    一、QFlie文件读写
      #include<QFile>
      #include<QFileDialog>//文件对话框
    1、读文件

     1     QString path = QFileDialog::getOpenFileName(this,//指定父对象
     2                 "open", "../", "TXT(*.txt)");//对话框的名字        路径    
     3     if(!path.isEmpty())
     4     {
     5         QFile file(path);//创建文件对象
     6 
     7         //打开文件,只读方式
     8         if(file.open(QIODevice::ReadOnly))
     9         {
    10 #if 0
    11             QByteArray array = file.readAll(); //默认只识别utf8编码,可以通过文本流读其他的编码
    12             //显示到编辑区
    13             ui->textEdit->setText(QString(array));
    14 #endif
    15             QByteArray array;
    16             while( file.atEnd() == false)
    17             {
    18                 array += file.readLine();//读一行
    19             }
    20             ui->textEdit->setText(array);
    21         }
    22         file.close();
    23     }

    2、写文件

     1     QString path = QFileDialog::getSaveFileName(this, "save", "../", "TXT(*.txt)");
     2     if(!path.isEmpty())
     3     {
     4         QFile file; //创建文件对象
     5         //关联文件名字
     6         file.setFileName(path);        
     7         if(file.open(QIODevice::WriteOnly))//只写
     8         {
     9             QString str = ui->textEdit->toPlainText();//获取编辑区内容
    10             //写文件 QString -> QByteArray
    11             file.write(str.toUtf8());            
    12             //file.write(str.toStdString().data());//QString->c++ string->char *          
    13             //file.write(str.toLocal8Bit());//转换为本地平台编码
    14         }
    15         file.close();
    16     }


    二、QFlieInfo获取文件信息
    QFileInfo info(path);
    qDebug() << "文件名字:" << info.fileName().toUtf8().data();//转为UTF-8编码 转为char*字节数组
    qDebug() << "文件后缀:" << info.suffix();
    qDebug() << "文件大小:" << info.size();
    qDebug() << "文件创建时间:" <<info.created().toString("yyyy-MM-dd hh:mm:ss");
    //2016-01-04 15:13:00 y年 M月 d日...
    //create()的返回值是QDateTime

    三、QDataStream 数据流

      处理二进制流  音频、图像等都可以

    1、写文件

    1     QFile file("../test.txt");//创建文件对象    QDataStream也用QFile创建文件对象
    2     if(file.open(QIODevice::WriteOnly))
    3     {
    4         //创建数据流,和file文件关联
    5         //往数据流中写数据,相当于往文件里写数据
    6         QDataStream stream(&file);
    7         stream << QString("主要看气质") << 250;
    8         file.close();
    9     }

    2、读文件

     1     #define cout qDebug() << "[" << __FILE__ <<":" << __LINE__ << "]"
     2     QFile file("../test.txt");
     3     if(file.open(QIODevice::WriteOnly))
     4     {
     5         QDataStream stream(&file);
     6         QString str;
     7         int a;
     8         stream >> str.totf8().date() >> a;//读文件的顺序和写文件的顺序一样
     9         cout << str.toUtf8().data() << a;
    10         file.close();
    11     }

    四、QTextStream文本流//可以指定编码进行读写

    1、写文件

     1     QFile file();
     2     file.setFileName("../test.txt");
     3     if(file.open(QIODevice::WriteOnly))
     4     {
     5         /*    也可以和QDataStream的用法一样    */
     6         
     7         QTextStream stream(&file);       
     8         stream.setCodec("UTF-8");//指定编码
     9         stream << QString("主要看气质") << 250;//写文件
    10         file.close(); 
    11     }

    2、读文件

     1 QFile file("../demo.txt");
     2     if(file.open(QIODevice::ReadOnly))
     3     {
     4         QTextStream stream(&file);
     5         //指定编码
     6         stream.setCodec("UTF-8");
     7         #if 0//error
     8           QString str = stream.readAll();
     9           ui->textEdit->setText(str);
    10           QString str;
    11           int a;
    12           stream >> str >> a;
    13           cout << str.toUtf8().data() << a;//str 会取出所有的数据,然后a的值为0
    14         #endif
    15 
    16         QString str = stream.readAll();
    17         ui->textEdit->setText(str);
    18         file.close();
    19     }
     
  • 相关阅读:
    EF框架下的双表查询
    MVC中控制器向视图传值的四种方式
    html中常用的标签元素
    配置sql server 允许远程连接
    Sql Server中使用存储过程来实现一些时间差的改变
    Linux学习资料整理
    后缀数组求字符串最长重复子串
    static关键字
    ubuntu下搭建hadoop平台
    机器学习中的一些概念
  • 原文地址:https://www.cnblogs.com/wangbin-heng/p/9521048.html
Copyright © 2020-2023  润新知