基本上,我有一个目录,我希望最多存储X个元素,在此之后,添加的每个文件都必须触发删除最旧的存储元素。所以我想在QFileInfoList中按时间对它们进行排序,但遗憾的是,这取决于系统时间(如果用户将时钟旋转Y小时,则最新添加的文件将被认为是最旧的,因此将被删除)这是我到目前为止写的关于系统时间的问题:
void namespace::cleanStationLogoDir()
{
QDir dir(DIR);
if(!dir.exists())
{
//Create directory
if(dir.mkpath(DIR))
{
//Ok result
}
else
{
qDebug() << "Unable to create dir.";
}
}
QFileInfoList files = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::Time);
qDebug() << "files size: " << files.size();
while(files.size() > X)
{
qDebug() << "Removed last element" << files.last().filePath();
dir.remove(files.takeLast().filePath());
qDebug() << "files size: " << logo_files.size();
}
}
字符串
你知道其他的方法吗?我考虑在存储文件的时候给文件名添加一个递增的ID,但是在max_INT文件之后,这可能会成为一个问题,或者如果我把ID Package 到X元素中,那么我不确定在下一个文件中删除哪个。
1条答案
按热度按时间6tr1vspr1#
1)你可以使用epoch time作为文件名的一部分,而不是使用一个任意的增量变量,它显然永远不会重置或重用。
2)您可以使用QFileInfo,就像您可以更改现有逻辑一样,
字符串
代码将删除旧文件,同时保留最近的10个文件。