需求
如上图
某QT项目中的一个小需要:
- 1,qrpukeky 及 waivermode文件不会变化,一直在,供第三方使用,不用写在paramlist文件中
- 2,PRM.开头的文件每次可能会更新变化,并且文件名要写在paramlist中
代码
// 获取指定文件夹所有的文件名
QString path = "/mnt/sdcard/LzPca/param/";
QString file_name = "paramlist";
QString prename = "PRM.";
// 遍历某文件夹,去除非PRM.开头的文件
QDir dir(path);
QStringList files = dir.entryList(QDir::Files|QDir::Readable, QDir::Name);
for (int i = 0; i < files.size(); ++i)
{
qDebug() << files;
QString temp = files.at(i).left(4);
if (temp != prename){
qDebug() << "delete1" << files.at(i);
files.removeAt(i);
i--;
}
}
qDebug() << files;
// 打开paramlist,清空并写入获取到的文件名
QString filepath = path + file_name; //paramlist
QFile file(filepath);
if (!file.open(QIODevice::ReadWrite | QIODevice::Truncate))
{
qDebug() << "Cannot open paramlist for writing!" << endl;
QMessageBox::about(NULL, "提示", "无法打开paramlist!");
return -1;
}else{
qDebug() << "Success open paramlist for writing" << endl;
// 最开头的一个字节以二进制形式保存参数文件的数量
uchar count = files.count();
QByteArray array;
array.push_back(count);
file.write(array);
for (int i = 0; i < files.count(); ++i){
QString name = files.at(i);
file.write(name.toUtf8());
}
file.close();
}
效果
查看其十六进制形式