2013-06-06 94 views
1

我不知道如何使用readAttributes方法的Files類,來一次訪問所有的文件屬性。我的問題是我想要批量打印所有的屬性,而不用調用方法。如何使用readAttributes方法?

我不想,調用方法逐一如下圖所示:

Path file = ...; 
BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class); 

System.out.println("creationTime: " + attr.creationTime()); 
System.out.println("lastAccessTime: " + attr.lastAccessTime()); 
System.out.println("lastModifiedTime: " + attr.lastModifiedTime()); 

System.out.println("isDirectory: " + attr.isDirectory()); 
System.out.println("isOther: " + attr.isOther()); 
System.out.println("isRegularFile: " + attr.isRegularFile()); 
System.out.println("isSymbolicLink: " + attr.isSymbolicLink()); 
System.out.println("size: " + attr.size()); 

我想訪問所有BasicFileAttribute一次。 如果我們無法一次訪問readAttributes的所有屬性,那麼是否有其他方式來執行此操作。

+0

框架已經*設計*工作這樣的,它所以對我們大多數人來說。你能否明確說明爲什麼你不想一個一個調用方法*?這些方法不執行任何磁盤IO,它們是簡單的getter並返回已獲取的值。那麼問題是什麼? – inquisitive

+0

嘗試'System.out.println(attr);',看看你得到了什麼。如果你不喜歡它,那麼你將不得不自己形成一個字符串,但是你仍然需要調用所有的方法。 –

+0

我試過了,但是我得到了這個「[email protected]」@Bhesh – javadb9

回答

1

這將工作

import java.nio.file.*; 
import java.nio.file.attribute.BasicFileAttributes; 
import java.io.*; 
import java.util.Map; 

import static java.nio.file.StandardCopyOption.*; 

public class ListOfNumbers { 

    public static void main(String[] args) throws IOException { 
     Path path = Paths.get("C:\\Documents and Settings\\Administrator\\Desktop\\kk.txt"); 
     Map f = Files.readAttributes(path, "*"); 
     System.out.println(f); 
    } 
} 
0

這是如何使用類BasicFileAttributesreadAttributes()方法的另一個例子:

Path path = Paths.get("C:\\Users\\jorgesys\\workspaceJava\\myfile.txt"); 
    BasicFileAttributes attr; 
    try { 
    attr = Files.readAttributes(path, BasicFileAttributes.class); 
    System.out.println("Creation time: " + attr.creationTime()); 
    System.out.println("Last access time: " + attr.lastAccessTime()); 
    System.out.println("Last modified time: " + attr.lastModifiedTime()); 
    } catch (IOException e) { 
    System.out.println("oops un error! " + e.getMessage()); 
    }