2013-12-12 78 views
20

用於檢查文件系統中文件屬性的類BasicFileAttributes具有方法isRegularFile()。不幸的是,Javadoc描述相當缺乏:什麼是Java中的「常規文件」?

判斷該文件是否爲帶有不透明內容的常規文件。

這是什麼意思?具有不透明內容的普通文件究竟是什麼?我可以從課堂上的其他方法中知道它不是一個目錄或符號鏈接,所以我傾向於認爲它是其他的一切。但是,顯然存在某種類型的「不規則文件」,因爲存在名爲isOther()的方法,如果它不是目錄,符號鏈接或「常規文件」,則返回true。

那麼Java中的普通文件究竟是什麼?

+0

找到[這個問題](HTTP GET所有其他信息:/ /stackoverflow.com/questions/16505508/what-opaque-content-exactly-mean),更多地關注不透明的內容部分。雖然似乎沒有回答你的整個問題。 – thegrinner

+2

在* nix系統上,文件系統中還有設備節點,fifos和本地套接字。也許這就是那種「其他」的意思? – FatalError

+0

@FatalError,這個詞只和* nix系統有關,但不是像Windows這樣的系統? – Thunderforge

回答

11

例如在UNIX中,常規文件是某種方式不特殊的文件。特殊文件包括符號鏈接和目錄。常規文件是永久存儲在文件系統中的一系列字節。

閱讀這個答案@ UNIX & Linux的stackexchange:What is a regular file?

我的身影RM -i是一個別名,可能RM -i。 「常規」部分並不意味着特別的意思,它只意味着它不是管道,設備,插座或其他任何「特殊」的東西。

它表示該文件不是符號鏈接,管道,rand,null,cpu等。 也許你已經聽說過linux哲學,一切都是文本。這個 不是真的,但它暗示了一個主要的操作環境 ,其中字符串處理工具可以直接應用於文件系統元素 。在這種情況下,這意味着以更爲直接的方式。至 請參閱隔離檢測步驟,嘗試命令文件,如文件 /etc/passwd或文件/ dev/null。

+1

這個術語也適用於Windows和其他平臺嗎? – Thunderforge

+0

是的,應用所有支持java的平臺。 – Jorgesys

+1

至於在Windows中的相關性,我相信NTFS文件系統實際上支持它自己的符號鏈接形式,您只需要一個特定的工具即可創建它們。 – Gimby

4

Files Reference - AIX IBM

的文件是數據的集合,可以讀出或寫入。文件可以是您創建的程序,您編寫的文本,您獲取的數據或您使用的設備。命令,打印機,終端和應用程序都存儲在文件中。這允許用戶以統一的方式訪問系統的各種元素,並賦予操作系統極大的靈活性。創建文件時不隱含格式。

有三種類型的文件

  • 常規的 -​​ 將數據(文本,二進制和可執行)。
  • 目錄 - 包含用於訪問其他文件的信息。
  • 特殊 - 定義一個FIFO(先進先出)文件或物理設備。

常規文件是最常見的。當使用文字處理程序創建文檔時,程序和文檔都包含在常規文件中。

常規文件包含文本或二進制信息。文本文件可由用戶讀取。二進制文件可以被計算機讀取。二進制文件可以是指示系統完成工作的可執行文件。命令,shell腳本和其他程序存儲在可執行文件中。

目錄包含系統訪問所有類型文件所需的信息,但它們不包含實際的文件數據。因此,目錄佔用的空間少於常規文件,並且使文件系統結構具有靈活性和深度。每個目錄條目代表文件或子目錄,並且包含文件的名稱和文件的i節點(索引節點引用)編號。 i節點號碼錶示描述與文件相關聯的數據的位置的唯一i節點。目錄由一組單獨的命令創建和控制。有關更多信息,請參閱操作系統和設備管理中的「目錄」。

特殊文件定義系統的設備或由進程創建的臨時文件。有三種基本類型的特殊文件:FIFO(先入先出),塊和字符。 FIFO文件也被稱爲管道。通過一個進程創建管道,以暫時允許與另一個進程進行通信。這些文件在第一個進程完成時不再存在。塊和字符文件定義設備。

以上所有內容均來自第一個鏈接。我已經檢查了許多有關Operational Systems差異的其他資料,看來這是我找到的所有資源中最常見的定義。

+0

這個答案不包括符號鏈接。這些將是一個特殊的文件。 – Brian

+0

這些條款是否也適用於Windows和其他平臺? – Thunderforge

+0

是的。正如我在回答的底部所說的那樣,它適用於每一個SO。 –

3

我不是這方面的專家,但在第一眼看BasicFileAttributes是不是一個類,但一個接口。所以無論什麼常規文件都取決於這個接口的實現。我可以看到有例如實現此接口的類WindowsFileAttributs

如果你看一下這個類的OpenJDK version,你會發現這是

!isSymbolicLink() && !isDirectory() && !isOther(); 

從代碼;-)

相關問題