在x元素之后,从QT中删除x元素之后的文件夹中的项目
Deleting items in a folder after X elements, from oldest, in Qt
基本上我有一个目录,我最想存储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包装到x元素中,那么我不确定下一个元素要删除哪个收到的文件。
1)您可以将epoch时间用作文件名的一部分,而不是使用任意增量变量,该变量永远不会重置或重复使用。
2)您可以使用qfileinfo,就像您可以将现有逻辑更改为
QFileInfoList files = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot, QDir::Time | QDir::Reversed);
const int MAX_NUM_FILES_TO_RETAIN = 10
for(int index = files.size(); index > MAX_NUM_FILES_TO_RETAIN; --index)
{
const QFileInfo& info = files.at(index -1);
QFile::remove(info.absoluteFilePath());
}
该代码将在保留最近的10个文件时删除旧文件。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 我有一个嵌套数组,它由另一个数组中的元素组成,这些元素分组为2.之后,我想显示每个元素的属性
- 在字符串的每个元素(不使用弦乐)的每个元素之后插入字符
- 为什么要指向数组或向量中最后一个元素之后的内存位置
- 矢量元素如何在矢量 std::move 之后保留其原始地址
- 在x元素之后,从QT中删除x元素之后的文件夹中的项目
- 如何在迭代器位置之后插入元素
- 如何有效地在元素之前和之后搜索关键短语
- 在链表中的specifeec元素之后添加元素,并删除第一个元素
- 从向量中移除元素,而不移除之后的元素
- Min-HeapSort在~350个元素之后不排序
- 在从循环中动态获得的值之后向数组中添加一个元素
- 为什么我指向 std::vector 元素的指针在 push_back() 之后更改了其值?
- 我应该在知道我将使用多少个元素之前还是之后定义向量中的元素数?
- C++在.size()之后丢失向量元素
- 在声明数组之后,所有元素都以某种方式成为最后一个元素
- 为什么在编组之后,数组中只有一个元素包含值