遍历某个路径下所有文件夹,以及子文件夹
/*
* @brief
* 遍历某个路径下所有文件夹,以及子文件夹,找到目标文件,写入到filedata中
*
* @param
* imode 0: 只会遍历子当前件夹 (默认) 1:会遍历所有的子文件夹
* @return bool
*/
bool findPathLoadFile(const QString &path, const QString &name, QByteArray *filedata, const int &imode = 0);
bool Widget::findPathLoadFile(const QString &path, const QString &name, QByteArray *filedata, const int &imode)
{
QDir dir(path);
if(!dir.exists())
{
return false;
}
dir.setFilter(QDir::Dirs | QDir::Files);
dir.setSorting(QDir::DirsFirst);//文件夹排在前面
QFileInfoList list = dir.entryInfoList();
bool bIsDir;
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
if(fileInfo.fileName() == "." | fileInfo.fileName() == "..")
{
continue;
}
bIsDir = fileInfo.isDir();
if(bIsDir)
{
++m_nDirCount;//目录个数
if (imode == 1) {
findPathLoadFile(fileInfo.filePath(), name, filedata, imode);
} else {
continue;
}
}
else
{
++m_nFilesCount;//文件个数
//qDebug() << "fileName="<<fileInfo.fileName() << "absoluteFilePath=" << fileInfo.absoluteFilePath() <<"fileSize="<<fileInfo.size()<< "lastModified=" << fileInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss");
if (fileInfo.fileName() == name) {
QString fileurl = fileInfo.absoluteFilePath();
QFile file(fileurl);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() <<"file read failed";
break;
}
qDebug() <<"file.size: "<<file.size();
QByteArray tempdate = file.readAll();
*filedata = tempdate;
qDebug() <<"ok"<<fileInfo.absoluteFilePath();
break;
}
}
}
return true;
}
获取当前路径下所有文件的fileInfo
/*
* @brief
* 获取当前路径下所有文件的fileInfo 包括: fileName absoluteFilePath fileSize 写入到json数组fileInfoArry中
*
* @param
* imode 0: 只会遍历子当前件夹 (默认) 1:会遍历所有的子文件夹
* @return bool
*/
bool getPathFileInfo(const QString &path, QJsonArray *fileInfoArry, const int &imode = 0);
bool Widget::getPathFileInfo(const QString &path, QJsonArray *fileInfoArry, const int &imode)
{
QDir dir(path);
if(!dir.exists())
{
return false;
}
dir.setFilter(QDir::Dirs | QDir::Files);
dir.setSorting(QDir::DirsFirst);//文件夹排在前面
QFileInfoList list = dir.entryInfoList();
bool bIsDir;
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
if(fileInfo.fileName() == "." | fileInfo.fileName() == "..")
{
continue;
}
bIsDir = fileInfo.isDir();
if(bIsDir)
{
++m_nDirCount;//目录个数
if (imode == 1) {
getPathFileInfo(fileInfo.filePath(), fileInfoArry, imode);
} else {
// continue;
qDebug() << "fileName="<<fileInfo.fileName() << "absoluteFilePath=" << fileInfo.absoluteFilePath() <<"fileSize="<<fileInfo.size()<< "lastModified=" << fileInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss");
QJsonObject fileInfoJson;
fileInfoJson.insert("filename", fileInfo.fileName());
fileInfoJson.insert("filepath", fileInfo.absoluteFilePath());
fileInfoJson.insert("filesize", fileInfo.size());
fileInfoArry->append(fileInfoJson);
}
}
else
{
++m_nFilesCount;//文件个数
qDebug() << "fileName="<<fileInfo.fileName() << "absoluteFilePath=" << fileInfo.absoluteFilePath() <<"fileSize="<<fileInfo.size()<< "lastModified=" << fileInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss");
QJsonObject fileInfoJson;
fileInfoJson.insert("filename", fileInfo.fileName());
fileInfoJson.insert("filepath", fileInfo.absoluteFilePath());
fileInfoJson.insert("filesize", fileInfo.size());
fileInfoArry->append(fileInfoJson);
}
}
return true;
}