bool TFileInfo::Actual(bool update) { if(update || m_actual == AD_UNDEFINED) { m_actual = (*this == TFileInfo(path.Original())) ? 1 : 0; } return m_actual > 0; }
void grepFile::grep(const QString &filename, QList<TFileInfo> &foundFiles, const QString &OrigFilename) { QFileInfo fileInfo(filename); if(fileInfo.isDir()) { return; } QFile file(filename); // if(!this->m_deepSearch) { if (file.open(QIODevice::ReadOnly)) { //设置文件流并设置编码 QTextStream in(&file); //行号 int nLine=0; //读文件 while (!in.atEnd()) { QString line = in.readLine(); nLine++; if (line.contains( m_contentExp, m_sensitive)) { if(line.size()>80) { line.resize(80); } foundFiles << TFileInfo( OrigFilename, nLine, line); } } file.close(); } return; } QList<int> nList; for (int i=0;i<expCodecList.size(); i++) { if (file.open(QIODevice::ReadOnly)) { QString exp = expCodecList.at(i).exp; QTextCodec *codec = expCodecList.at(i).codec; //设置文件流并设置编码 QTextStream in(&file); in.setAutoDetectUnicode(false); in.setCodec(codec); //行号 int nLine=0; //读文件 while (!in.atEnd()) { QString line = in.readLine(); nLine++; if (line.contains( exp, m_sensitive)) { if(nList.contains(nLine)) { continue; } nList.append(nLine); QString tline; ConvTextCodec( line, codec, tline, QTextCodec::codecForName("gb18030")); if(tline.size()>80) { tline.resize(80); } //foundFiles << TFileInfo( fileInfo.fileName(), nLine, "["+codec->name()+"]\t"+tline); foundFiles << TFileInfo( OrigFilename, nLine, "["+codec->name()+"]\t"+tline); } } file.close(); } } }