FileSystemMap:与文件系统交互的自然方法
作為項目的一部分,我目前正在研究創(chuàng)建FileSystemMap 。 我已經(jīng)開始了一個非常小的GitHub的項目在這里舉辦的代碼。
本質(zhì)上,此映射實現(xiàn)將允許用戶與其文件系統(tǒng)上的目錄進行交互,就好像它是java.util.Map 。 映射中的每個條目將是該目錄中的文件,鍵將是文件名,值將是文件的內(nèi)容。
此代碼構(gòu)建一個FileServiceMap并添加五個條目:
Map map = new FileSystemMap("/tmp/filetests");map.put("one", "one");map.put("two", "two");map.put("three", "three");map.put("four", "four");map.put("five", "five");這將導(dǎo)致直接的結(jié)構(gòu)如下:
/tmp/filetests/|----- five|----- four|----- one|----- three|----- two添加和刪??除條目將更改目錄中的文件。 更改條目的值將導(dǎo)致使用新值作為內(nèi)容重寫文件。 有關(guān)更多示例,請參見testMapMethods中的代碼。
此外, FileSystemMap已設(shè)計用于雙向交互。 對其進行的任何程序性更新都將反映在文件系統(tǒng)上,并且對文件系統(tǒng)的任何更新將由地圖拾取并作為事件觸發(fā)。
此代碼將更改注冊到文件系統(tǒng)并打印出來:
Map map = new FileSystemMap("/tmp/filetests"); map.registerForEvents(System.out::println);這是一些示例輸出:
FPMEvent{eventType=NEW, programmatic=true, key='one', value='one'}eventType是以下之一:
- 新–文件已創(chuàng)建
- 更新–文件已被修改
- 刪除–文件已被刪除
編程標志指示是否觸發(fā)事件的是FileSystemMap本身。 例如,如果調(diào)用了put() ,將創(chuàng)建一個文件,該文件又將引發(fā)一個事件。 為了避免反饋,了解它是否是觸發(fā)事件的FileSystemMap上的操作可能很有用。
密鑰是已更改文件的名稱。
該值是與已更改文件關(guān)聯(lián)的最新值。 注意:這可能是也可能不是實際觸發(fā)更改的值 。 例如,如果條目有兩個非常快速的更改,則在第二次更新已經(jīng)發(fā)生之后,第一個事件的值完全有可能會獲得該值。 例如
可能產(chǎn)生以下輸出:
FPMEvent{eventType=NEW, programmatic=true, key='one', value='2'}拾取了第一個事件(通過將“ one”設(shè)置為“ 1”觸發(fā)),但是在程序檢查文件內(nèi)容時,文件已更改為“ 2”。 然后拾取第二個事件(通過將“ 1”設(shè)置為“ 2”來觸發(fā)),但是由于該值未更改,因此將其抑制。
一些注意事項:
不用說,此類是為特定的實用程序而不是任何性能而設(shè)計的。
歡迎對該項目的所有貢獻!
翻譯自: https://www.javacodegeeks.com/2015/04/filesystemmap-a-natural-way-to-interact-with-your-file-system.html
總結(jié)
以上是生活随笔為你收集整理的FileSystemMap:与文件系统交互的自然方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java压缩_Java压缩
- 下一篇: 查看linux磁盘空间的命令(查看lin