【问题标题】:Delete oldest File(s) in a directory until it is under a certain file size删除目录中最旧的文件,直到它小于某个文件大小
【发布时间】:2011-08-17 22:48:17
【问题描述】:

我想要完成的是以下内容:假设我有一个将图像写入文件目录(SD 或内部缓存)的函数。写出文件后,我执行检查以查看我的图像目录是否在某个总文件大小内(现在,我正在使用这个function 递归计算目录的文件大小)。如果我刚刚添加的文件使该目录太大,那么我想要做的是继续删除旧文件,直到我们刚好低于最大文件大小。

我正在考虑首先从最旧的第一个排序文件目录成员(通过比较器,使用此example 升序排列),然后将数组转换为 ArrayList 以获取它的迭代器,然后当我们的目录文件大小仍然高于最大文件大小,我仍然有文件要迭代,我删除旧文件,直到我打破那个 while 循环。有没有更有效的方法来实现这一点?

【问题讨论】:

    标签: android file iterator directory delete-file


    【解决方案1】:

    您的瓶颈很可能是文件系统操作(即:读取目录内容和删除文件),而不是内存操作,因此您可能不必太担心后者的效率,所以只要你不做非常低效的事情。

    您描述的粗略算法听起来不错。您可以通过简单地执行以下操作来避免 ArrayList 转换:

    for (Pair pair : pairs) {
        if (totalSize <= maxSize) {
            break;
        }
    
        totalSize -= pair.f.length();
        pair.f.delete();
    }
    

    【讨论】:

    • 是的,我在排序后添加了 sn-p。希望当我今天尝试它时它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    相关资源
    最近更新 更多