2010-03-16 100 views
0

我需要有效的算法来保留特定文件夹中只有十个最新文件在磁盘上以支持某种发布过程。在任何时间点,只有10个文件应该出现在这个文件夹中。请给你的建议,这里应该使用什么。磁盘上十个最新的文件

+0

您能详细阐述一下您尝试实施的确切发布过程吗? 另外,文件中有什么?你为什么只需要保持10? – 2010-03-16 05:08:46

+0

将会有10个内容项目。他们需要放在磁盘上的文件夹中。我无法打开商业理念。我认为它并不重要。 – Artic 2010-03-16 05:12:11

+0

需要有关要求的更多细节。你正在编写一个跟踪文件夹的服务吗?您的程序尝试发布某些内容后,是否需要删除较旧的文件? – 2010-03-16 05:12:20

回答

2

你可以问文件的目录listFiles,是否存在由上次更改时间(超过9排序他们)并删除这些文件最早的(最小号)向下修整至9

0

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

但这是您不提供的业务要求(您甚至自己知道吗?)。

1

如何使用文件系统观察程序如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可以帮助您与文件系统观察家。

相关问题