QT 遍历文件夹内容 读取指定文件

来源:互联网 发布:msp430用什么软件 编辑:程序博客网 时间:2024/05/21 09:31

原文地址:http://blog.sina.com.cn/s/blog_5cefd9ca0102v153.html

在qt中把各项功能封装的非常好,并且极为便于使用。QDir类提供了对目录结构和他们的内容的访问,是平台无关的。其实对一个类的理解重点还是在于这个类的要实现的功能目的,然后根据常识的理解来看看它所提供的几个重要的接口,就算是对这个类的理解了。 然后自己的需要功能需求来调用接口实现相应功能,所以如果是自己学习的话就要抓住核心概念,核心功能来实验和理解。如果是工作的话就是先实现功能然后再来抽象系统化。

直接上代码这里是

QDir dir(m_frameFilepath);

    dir.setFilter(QDir::Files|QDir::Hidden|QDir::NoSymLinks);

dir.setSorting(QDir::Size|QDir::Reversed);  //这两个函数设置进入list的顺序和文件属性,这种设置下就应该是文件隐藏文件 不列出连接符

根据大小的反排序

    QStringList filters;

    filters << "*.xml";

    dir.setNameFilters(filters); //这个就是设置过滤的文件名使用通配符

    QFileInfoList list=dir.entryInfoList();

    QString str;

    for(int i=0;i

    {

        QFileInfo fileInfo = list.at(i);

//      str = qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)

//                            .arg(fileInfo.fileName()));

       str = fileInfo.fileName();

     //  qDebug() << str;

       ui->comboBoxChoose->insertItem(i,str);

    }

 

这其中的QFileInfoList 有点意思 它其实就是QFileInfo的 QList容器类型  typedef QList QFileInfoList;  这样的QStringList 应该也是如此的了(这个以为是一样的其实去看源码发现是进行的继承,还增加了一些简单的功能,构造函数更强大了) 所以对此种类型的后续操作就是对QList的操作咯,这个好。QFileInfo是提供具体的文件信息的操作的类 提供大小 文件名字 是否可读 是否存在啊这些 路径查询这些

再上两段代码读,存文件

QString getCurUseFile(QString &str)

{

    QFile file(str);

    file.open(QFile::ReadOnly);

    QByteArray bytearr;

    bytearr = file.readLine();

    QString strread(bytearr);

    return strread;

}

void setCurUseFile(QString &filepath, QString name)

{

    QFile fileW(filepath);

    if(!fileW.open(QFile::WriteOnly))

    {

       QMessageBox box;

       QString str(tr("打开写配置文件出错"));

       box.setText(str);

       return;

    }

    QTextStream in(&fileW);

    in << name;

}

感觉QFile这个操作文件输入输出设备的类应该是个大类 但具体看时倒也不大,就是常规的打开关闭定位等。QFile是从QIODevice继承而来的。在读写字符串时是与QTextStream类相结合是相当的方便。在读写二进制时用QDataStream更方便。当然是用QFile本身提供的操作也可以完成读取行某个位置的字节这些动作,其返回是一个QByteArray数组。  QByteArray与QString是有些类似的,只不过QString可支持更多 像款字符编码这些,他们之间的转换也是相当方便的,就像是char数组样,是不以\0结尾的。

这样基础的文件夹 访问 文件读写 其周边的类就都有一个了解了。

总结一下:

QDir类管理目录和文件名列表。

QFile是直接负责具体文件的打开读写的。

QFileInfo类控制文件的详细信息,比如访问权限、文件日期和文件类型。
对文件的操作当然可以用QFile本身的操作,但更为方便的是QDataStream、QTextStream,还有更好的办法么。

原创粉丝点击