簡體   English   中英

給定路徑名,如何使用Java File API判斷對象是目錄還是文件?

[英]Given a pathname, how can I tell whether the object is a directory or a file using the Java File API?

給定絕對路徑作為變量String路徑名,如何使用Java類文件執行以下操作? 據我所知,答案在括號內,請確認。

  1. 得到文件/目錄的大小? (我不確定)

  2. 測試絕對路徑是否甚至導致存在某些東西? (File.exists(pathname),如果存在,則應返回布爾值true,否則應返回布爾值false)

  3. 看看這是文件還是目錄? (File.isFile(pathname),如果路徑名導致文件返回一個布爾值,否則為false。file.isDirectory(pathname),如果路徑名導致目錄返回一個布爾值,否則為false。

  4. 看到最后修改的日期? (File.lastModified(pathname),它返回一個很長的數字,我已經有了轉換為特定日期的方法

一個相關但獨立的問題:是否存在“文件”(例如.doc,.jpeg,.mpeg,.mp3,.xml,。*)無法通過isFile和isDirectory測試的文件? 如果是這樣,我如何區分一個空文件夾和一個文件,該文件都不能通過isFile和isDirectory測試? 我問是因為在File類文檔中,它為isFile聲明了以下內容:測試此抽象路徑名表示的文件是否為普通文件。 如果文件不是目錄,並且滿足其他與系統有關的條件,則該文件是正常的。 由Java應用程序創建的任何非目錄文件都保證是普通文件。

File f = new File(path);
// Get size of file (not a directory though)
f.length();
// Check if file exists
f.exists();
// Check if file is directory
f.isDirectory();
// Check if file is file
f.isFile();
// Last modified date
f.lastModified();

參考: JavaDoc for java.io.File

如果你想有一個目錄的大小,你必須在你遍歷你要計算的尺寸目錄將這些方法結合起來,或者你可以使用一個第三方庫像FileUtils的Apache下議院IO具有sizeOf方法顯然也可以處理目錄的大小。

  • 測試是否存在: file.exists()
  • 測試文件是否正常: file.isFike()
  • 我們既不是“文件”也不是目錄的東西:符號鏈接

是否存在“文件”(例如.doc,.jpeg,.mpeg,.mp3,.xml,。*)無法通過isFile和isDirectory測試的文件?

不,這些都是常規文件。 如果是文件,它將通過isFile測試。

不是“普通文件”或目錄的是設備文件和命名管道文件。 java.io.File無法准確區分這些...或符號鏈接。

如果您希望能夠執行特定於操作系統的操作,請查看Java 7的java.nio.file包,尤其是Files類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM