Apache VFS(1):基本介紹

來源:互聯網
上載者:User
本系列文章導航

Apache VFS(1): 基本介紹

Apache VFS(2): 檔案的監聽和監控

Apache VFS(3): 檔案過濾器和選取器

Apache VFS(4): 事件

Apache VFS(5): 使用它!

Apache VFS(6): 幾個重要的概念性介面

Apache VFS(7): 檔案管理工具解析檔案的方法

Apache

VFS

提供了一種虛擬檔案系統,能夠讓你通過程式很方便的和位於本地檔案系統,FTP檔案系統,HTTP檔案打交道。

在Apache

VFS

中核心是FileObject介面


它代表一個檔案,和Java
File不同,它具有更多延伸的功能和資訊。實現FileObject介面的檔案對象有很多:例如AbstractFileObjet抽象類別提供了部分
FileObject實現。大部分FileObject實作類別都繼承AbstractFileObject類:

  1. LocalFile:(很奇怪為什麼不是LocalFileObject)
  2. FtpFileObject
  3. HttpFileObject
  4. SftpFileObject
  5. ZipFileObject
  6. TarFileObject
  7. RamFileObject
  8. UrlFileObject
  9. DelegateFileObject
  10. CompressedFileObject

FileObject代表一個檔案,能夠用來訪問檔案內容和結構。檔案是以階層組織的,每個層次組織形成一個檔案系統。一個檔案系統就像本地作業系統中的檔案系統一樣,例如Windows檔案系統,或者一個Http伺服器,或者一個Zip檔案包。

檔案有兩種類型:目錄

普通檔案

。普通檔案擁有資料或者說內容,而目錄不含有內容,只能包含其他檔案,普通檔案不能包含其他檔案。

檔案名稱

FileObject擁有一個FileName對象,將檔案名稱字作為一個獨立的對象處理。檔案名稱是不可變的。檔案名稱對象有很多方法:

  1. getBaseName
  2. getDepth
  3. getExtension
  4. getFriendlyURI
  5. getParent
  6. getPath
  7. getRoot
  8. 等等


檔案內容的讀取

注意:和Java File不同的是FileObject擁有一個FileContent對象

,如果想訪問檔案內容的話,需要使用FileObject.getFileContent()方法,這個方法返回一個FileContent對象。FileContent代表一個檔案的內容。

簡單的說讀取檔案內容使用:FileContent.getInputStream()

寫內容使用:FileContent.getOutputStream()

FileContent內部有一個final AbstractFileObject

的引用。

FileContent的重要方法有:

  1. close 關閉檔案內容使用的所有資源,包括所有開啟的檔案流。當心!!

  2. get/set Attribute/Attributes: 不能用目前,除非自己重寫,其實調用AbstractFileObject的doGet/SetAttribute方法
  3. getContentInfo 返回一個ContentInfo對象

    , ContentInfo對象記錄了內容的類型和編碼資訊

  4. getInputStream 讀檔案內容
  5. getOutputStream 寫檔案內容
  6. isOpen 檢查看看該檔案有沒有開啟的檔案流
  7. getFile 返回FileObject對象
  8. get/setLastModifiedTime


檔案的操作

基本的檔案操作例如建立,刪除,重新命名,拷貝都可以通過FileObject來完成。

  1. copyFrom(FileObject src,FileSelector selector) 從其他地方的源檔案拷貝到這個檔案中,包括源檔案的子檔案,有一個檔案選取器參數和源檔案參數
  2. delete() 刪除此檔案
  3. delete(FileSelector selector) 刪除符合檔案選取器的所有該檔案的子檔案
  4. createFile() 如果這個檔案不存在,建立它
  5. createFolder() 如果這個目錄不存在,建立它

VFS

為了支援進階的操作例如和版本控制工具配合,提供了FileOperation對象,不過VFS

根本沒有任何實現,如果你想玩,自己玩去吧。

在這裡批判一下VFS

: VFS


開發有些地方非常不合理,例如FileObject號稱支援對檔案設定屬性,後來發現其AbstractFileObject的
getAttributes()方法只返回一個空Map,而setAttribute()更離譜,乾脆直接拋出不支援的異常。這個功能非常簡單啊,如果你
需要的話,自己改一下吧。因此,使用VFS

時,千萬注意這些陷阱,誰讓這是開源軟體那 ON YOUR OWN RISK!

 

文章來源:http://alartin.javaeye.com/blog/92053

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.