QT递归遍历文件夹下所有文件
文件操作经常会用到获取文件夹下所有文件,包括所有子文件夹里的文件,这时可以用递归方法来便利所有文件夹,代码如下:
void MainWindow::GetAllfilesFromDir(QString p_str_dirname , QFileInfoList &m_fileinfolist)
{
QDir t_dir(p_str_dirname);
if(!t_dir.exists())
{
QMessageBox::information(this , "警告" ,"选择文件夹为空,请重新选择");
return;
}
foreach(QFileInfo info , t_dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs))
{
GetAllfilesFromDir(info.filePath() , m_fileinfolist);
}
foreach(QFileInfo info , t_dir.entryInfoList(QDir::Files))
{
m_fileinfolist.push_back(info);
}
foreach(QFileInfo info , m_fileinfolist)
{
qDebug()<<"---"<<info.absoluteFilePath()<<"---"<<info<<endl;
}
}
获取文件行数
int MainWindow::GetFileLine(QString p_str_filename)
{
QFile mfile(p_str_filename);
int m_count=0;
if(mfile.open(QIODevice::ReadOnly))
{
while(true)
{
char buffer[2048]={0};
int readsize = mfile.readLine(buffer , sizeof(buffer));
if(readsize!=-1)
{
m_count++;
}
else
{
break;
}
}
}
return m_count;
}