磁盘上的十个最新文件

时间:2010-03-16 05:02:28

标签: java file-io

我需要有效的算法才能在特定文件夹中保留磁盘上的十个最新文件,以支持某种发布过程。任何时间点此文件夹中只应包含10个文件。请在这里给出建议。

3 个答案:

答案 0 :(得分:2)

你可以向File询问列表文件的目录,如果有多于9个按lastModified()排序,则删除最旧的文件(最小的数字)以减少为9。

答案 1 :(得分:1)

如何使用像JNotify这样的文件系统观察器?

  1. 注册您感兴趣的活动(例如,Created event);
  2. 在每个创建的活动中标记内部列表中的文件数。
  3. 一旦到达第11个文件,请删除具有最早创建日期的文件。
  4. 或者使用Commons 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可以帮助您处理文件系统观察程序。

答案 2 :(得分:0)

您必须定期轮询目录并删除比其中第10个最旧文件旧的所有内容。 当然,人们可以质疑“第10个最古老的文件”究竟是什么。文件上的时间戳可能不会指示它毕竟添加到文件夹的日期/时间。 因此,您的系统可能实际上需要一些独立的方式来跟踪文件夹中的文件以确定何时添加每个文件,以便根据文件的时间删除文件 放在那里,而不是文件实际上有多大。

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