2010-03-16 99 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可以幫助您與文件系統觀察家。

相關問題