代码之家  ›  专栏  ›  技术社区  ›  Artsiom Anisimau

磁盘上的十个最新文件

  •  0
  • Artsiom Anisimau  · 技术社区  · 15 年前

    我需要一个有效的算法,只保留磁盘上的十个最新文件,特别是文件夹,以支持某种发布过程。在任何时候,此文件夹中只应存在10个文件。请给出你的建议。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Tom    15 年前

    如果有9个以上的文件,您可以请求文件将目录保存到listfiles,然后按lastmodified()对它们进行排序,并删除最旧(最少)的文件,将其缩小到9。

        2
  •  1
  •   Community Mohan Dere    8 年前

    使用像这样的文件系统监视程序怎么样 JNotify ?

    1. 注册您感兴趣的事件(例如,创建的事件);
    2. 在内部列表中标记每个创建事件的文件数。
    3. 一旦到达第11个文件,就删除创建日期最早的文件。

    或者使用通用JCI FileAlterationMonitor (FAM)要监视本地文件系统并获得有关更改的通知:

    ReloadingClassLoader classloader = new ReloadingClassLoader(this.getClass().getClassLoader());
    ReloadingListener listener = new ReloadingListener();
    
    listener.addReloadNotificationListener(classloader);
    
    FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
    fam.addListener(directory, listener);
    fam.start();
    

    这个 discussion 可以帮助您使用文件系统监视程序。

        3
  •  0
  •   jwenting    15 年前

    您必须定期对目录进行轮询,并删除其中第10个最早的文件之前的所有内容。 当然,这也让人质疑“第10个最老的文件”到底是什么。文件上的时间戳可能并不表示添加到文件夹中的日期/时间。 因此,您的系统实际上可能需要某种独立的方法来跟踪文件夹中的文件,以确定每个文件的添加时间,以便根据文件的添加时间删除文件。 把文件放在那里,而不是放在文件实际有多旧。

    但这是你没有提供的业务需求(你自己知道吗?).