2013-05-04 23 views
0

這兩個接口之間有什麼區別? BasicFileAttributes vs BasicFileAttributeViewJava中的BasicFileAttributes與BasicFileAttributeView

據我所知,它們用於從文件中檢索基本元數據,但實際上彼此有什麼不同?

編輯:我以前的意思是,在下面的例子中,2接口可互換使用。有沒有什麼區別?除了事實上,爲了首先訪問視圖的屬性,你必須調用.readAttributes()方法?

BasicFileAttributeView bs = Files.getFileAttributeView(path, BasicFileAttributeView.class); 
     BasicFileAttributes bfa = Files.readAttributes(path, BasicFileAttributes.class); 

回答

1

接口只不過是它們描述的簽名。所以這兩個接口的區別在於,他們需要實現其他簽名的方法。

如果您有BasicFileAttributeView實例,則可以使用readAttributes()獲取BasicFileAttributes。如果您沒有BasicFileAttributeView實例,則可以使用Files.getFileAttributeView獲取它。即使您無法獲取FileAttributeView的每個子類的每個實例,也可以保證您可以獲得一個。

例子:

BasicFileAttributeView bfav = Files.getFileAttributeView(
            FileSystems.getDefault().getPath("/dev/null"), 
            BasicFileAttributeView.class 
           ); 
BasicFileAttributes  bfa  = bfav.readAttributes(); 
System.out.println(new Date(bfa.lastAccessTime().toMillis())); 
  1. 我們得到默認的文件系統,這樣我們就可以在下一步中使用它。
  2. 我們使用的文件系統,這樣我們就可以在下一步
  3. 使用它,我們得到BasicFileAttributeView(其中代表讀取BasicFileAttribute的能力)使用路徑,以便得到一個路徑.. 。
  4. 我們得到使用BasicFileAttributeView的BasicFileAttribute,使...
  5. 我們得到的LastAccessTime(一FILETIME),...
  6. 我們從以前
  7. 得到毫秒,我們從拿到日期前vious
+0

好的,我編輯我的問題與更多的信息。截至目前,非常感謝答案。 – Rollerball 2013-05-04 13:35:44

+0

因此,基本上它們是可以互換的,因爲我在最新的編輯中添加了 – Rollerball 2013-05-04 13:36:21

+0

@Rollerball:「可互換」意味着您可以隨時換一個。事實並非如此。就集合論而言,它們甚至不是雙射的,因爲你無法從BasicFileAttributes中獲得完全正常工作的BasicFileAttributeView。但是你可能會**沒有理由使用BFAView,除非你想設置創建時間或訪問時間**,因爲正如你在你的問題中提到的那樣,你可以通過使用其他的輔助方法很容易地獲得BFA 。 – 2013-05-04 14:24:57