⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filevisitor.cpp

📁 QT4的utils库源码包.解压后运行./configure配置,然后make.使用时在.pro文件中加入两行:LIBS+=-L$$(CPPLIBS)-lutils及INCLUDEPATH+=$$(C
💻 CPP
字号:
#include <QFileInfo>#include <QStringList>#include <QDebug>#include <QHash>#include <QProcess>#include "filevisitor.h"FileVisitor::FileVisitor(QString nameFilter, bool recursive, bool symlinks) {    m_filterList << nameFilter;    m_Recursive = recursive;    m_DirFilter = QDir::Files;    if (symlinks == false) m_DirFilter = m_DirFilter | QDir::NoSymLinks;          }FileVisitor::FileVisitor(QStringList nameFilters, bool recursive, bool symlinks) :    m_filterList(nameFilters), m_Recursive(recursive),    m_DirFilter(QDir::Files) {    if (symlinks == false) m_DirFilter = m_DirFilter | QDir::NoSymLinks; }QStringList FileVisitor::readLines(QString filename) {    QFile f(filename);    return readLines(f);}QStringList FileVisitor::readLines(QFile &file) {    QStringList lines;    if ( file.open( QIODevice::ReadOnly ) ) {        QTextStream stream( &file );        while ( !stream.atEnd() ) {            lines << stream.readLine(); /* line of text excluding '\n' */        }        file.close();    }    return lines;}static QHash<QString, QString> envToMap(QStringList envList) {    QHash<QString, QString> retval;    foreach (QString entry, envList) {        QStringList kvp = entry.split("=");        retval[kvp[0]] = kvp[1];    }    return retval;}static QString getHomeDir() {    QHash<QString, QString> environment = envToMap(QProcess::systemEnvironment());    return environment["HOME"];}    QString FileVisitor::expandTilde(QString path) {    static QString homedir = getHomeDir();    if (path.startsWith("~")) {        path.replace(0, 1, homedir);    }    return path;    }//start id="filevisit1" void FileVisitor::processFile(QString filename) { /* Override this method to do something more interesting with each file. */    emit foundFile(filename);}void FileVisitor::processEntry(QString current) {    current = expandTilde(current);    QFileInfo finfo(current);    processEntry(finfo);}void FileVisitor::processEntry(QFileInfo finfo) {    //    qDebug(QString("ProcessEntry: %1").arg(finfo.fileName()));    if (finfo.isDir()) {        QString dirname = finfo.fileName();        if ((dirname==".") || (dirname == ".."))            return;        QDir d(finfo.canonicalFilePath());        if (skipDir(d))            return;        processDir(d);    } else        processFile(finfo.canonicalFilePath());}//endvoid FileVisitor::processFileList(QStringList sl) {    foreach (QString current, sl) {        processEntry(current);    }}void FileVisitor::processDir(QString pathname) {    QDir d(pathname);    return processDir(d);}bool FileVisitor::skipDir(const QDir& d) {    bool retval = false;    QString name = d.canonicalPath();    if (name.contains("CVS")) {        retval = true;    }    if (name == "..")        retval=true;    if (retval==true) {        //qDebug(QString("  Skipdir: %1").arg(name));    }    return retval;}void FileVisitor::addNameFilter(QString nf) {    m_filterList << nf;    }void FileVisitor::setFilters(QStringList f) {        m_filterList = f;}//startvoid FileVisitor::processDir(QDir& d) {    d.setSorting( QDir::Name );    QStringList files = d.entryList(m_filterList, m_DirFilter);    foreach(QString entry, files) {        processEntry(d.filePath(entry));    }    if (m_Recursive) {        QStringList dirs = d.entryList(QDir::Dirs);        foreach (QString dir, dirs) {            processEntry(d.filePath(dir));        }    } }//end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -