2011-03-10 50 views
0

我想製作一個程序,它將打印我當前目錄(但不是目錄)中的所有文件,目前我的所有文件和目錄都打印在我的家中目錄。我該如何改變這一點?獲取文件的詳細信息,而不是打印目錄幫助

我的代碼的時刻:

File[] fileList = new File(System.getProperty("user.home")).listFiles(); 

另外,我怎麼能打印這些文件的細節呢?我想要的文件大小,權限,我可以得到的任何東西,以便使我的程序相當於unix中的ls -a。

有人可以幫助我,因爲我找不到相關的Java功能在任何地方?

非常感謝!

回答

0

循環陣列並僅打印具有isFile()true(或isDirectory()false)的那些。當前目錄是simpyl new File("")

所有的細節,你可以通過調用相應的方法獲得,如canRead()canWrite()length()等檢查the documentation更多

+0

它仍然在我的主目錄中打印所有內容,而不是當前目錄。我試圖自己改變這個,但不斷讓語法錯誤! – 2011-03-10 23:22:26

+0

@Charles Sheen查看更新 – Bozho 2011-03-10 23:44:54

0

您可以使用FileFilter擺脫迪爾斯

File[] files = new File(System.getProperty("user.home")).listFiles(new FileFilter() { 
    public boolean accept(File file) { 
     return !file.isDirectory(); 
    } 
}); 

你可以得到文件的大小與file.length()

0

通過初始化文件objec獲取當前目錄t,然後使用該對象的listFiles()方法。然後遍歷結果列表和測試每個文件與File.isFile()方法:

File cwd = new File("."); 
File[] fileList = cwd.listFiles() 
for (File aFile : fileList) { 
    if (aFile.isFile()) { 
     System.out.println(aFile); 
    } 
} 

可以使用canExecute()canRead(),並canWrite()方法找出如果您的程序可以做這些事情。正如在另一個答案中指出的,length()會給你的大小。

+0

長度是否不返回文件絕對路徑的長度而不是其大小? – 2011-03-11 00:31:26

+0

@Charles Sheen:'length()'以字節爲單位返回文件的大小。不是文件路徑字符串的長度。 – Nishan 2011-03-11 05:41:36

0

您可以通過使用一個FileFilter,像這樣得到的文件:

File dir = new File("/path/to/directory"); 

    FileFilter fileFilter = new FileFilter() { 
     public boolean accept(File file) { 
     return file.isFile(); 
     } 
    }; 

    File[] files = dir.listFiles(fileFilter); 
    for (File file : files) { 
    System.out.println("File: " + file); 
    } 
0

你的問題就沒有意義了。

您可以在Bozho中打印當前目錄中的文件列表,但會特別要求在「user.home」中顯示您的主目錄中的文件列表。

如果您不想列出主目錄中的文件,請將您的代碼更改爲從其他地方索要文件。

+0

這就是我所要求的幫助。 – 2011-03-10 23:59:19

+0

我還是很困惑。不要使用「user.home」;你是否試過「。」或「./」來代替? – 2011-03-11 00:04:30