跳轉至內容

Futurebasic/語言/檔案資料夾

來自華夏公益教科書

指定檔案和目錄

[編輯 | 編輯原始碼]

在 FB 中,有很多語句和函式需要你指定特定檔案和/或特定目錄。目錄本質上就是資料夾;此外,每個卷(基本上,每個磁碟)都有一個根目錄,其名稱與卷本身相同。目錄是一個容器;當你在 Finder 中雙擊資料夾圖示時,你會看到一個視窗,其中顯示該目錄的內容。同樣地,當你雙擊捲圖標時,你會看到一個視窗,其中顯示該卷根目錄的內容。

隨著 MacOS 的發展,已經出現了一些不同的方案來指定檔案和目錄。FB 中的語句和函式使用一種涉及三種不同資訊片段的系統,這些資訊片段以有時微妙的方式相互作用。這些資訊片段分別是:路徑名、目錄引用號和目錄 ID 號。

路徑名

[編輯 | 編輯原始碼]

在 MacOS 中,路徑名是一個不超過 255 個字元的字串,由冒號和/或檔案和目錄名稱組成,採用特定格式。在手冊的語法描述中,它通常被標識為 path$

  • 一個 完整路徑名 以卷的名稱開頭,以該卷內某個地方的檔案或目錄的名稱結尾。中間是卷根級到最終專案的目錄層次列表;列表中的名稱用冒號隔開。如果列表中的最後一個專案是目錄,則可以選擇在其後新增一個最後的冒號。完整路徑名 總是 至少包含一個冒號,但從不以冒號開頭。僅包含卷名後跟一個冒號的完整路徑名,表示卷的根目錄。
  • 一個 部分路徑名 或者以冒號開頭,或者僅由單個專案的名稱組成,不含冒號。它表示相對於某個“基本目錄”(下面討論)的層次目錄路徑。不包含冒號的部分路徑名錶示基本目錄的第一級上的一個專案。僅由冒號組成的部分路徑名(不包含專案名稱)表示基本目錄本身。部分路徑名也可以以 多個 冒號開頭:一個前導雙冒號表示路徑從基本目錄的 父目錄 開始;一個前導三冒號表示路徑從基本目錄的“祖父母目錄”開始,依此類推。

目錄引用號

[編輯 | 編輯原始碼]

這是一個奇怪的概念,由於歷史原因,它可以根據其值以多種不同的方式解釋。它也可以根據另一個稱為“目錄 ID 號”的量(下面討論)的值,被解釋為表示卷,或者表示捲上的特定目錄。目錄引用號始終以“帶符號短整型”數字儲存,因此其值範圍為 -32768 到 +32767。在手冊的語法描述中,它通常被標識為 refNum%

注意:驅動器 ID 號在系統啟動時分配給每個磁碟驅動器。卷引用號在卷安裝時分配給每個卷,並且在卷解除安裝之前有效。工作目錄引用號在你的應用程式的請求下分配給特定捲上的特定目錄,並且在你的應用程式“關閉”該目錄(如使用 CLOSE FOLDER 語句)或你的應用程式退出之前有效。

目錄 ID 號

[編輯 | 編輯原始碼]

這是一個正數,當目錄建立時,MacOS 會永久地分配給每個目錄。在任何給定的捲上,沒有兩個目錄 ID 號是相同的;但是,兩個不同捲上的兩個目錄可能具有相同的目錄 ID 號。

在那些使用目錄 ID 號的 FB 語句(OPENKILLNAMERENAME)中,你可以使用兩種不同的技術來指定該號碼。

你可以將它明確地指定為語句的引數。在手冊的語法描述中,它通常被標識為 dirID&。如果你沒有明確地指定它,FB 將使用你在 PARENTID 語句中指定的數字。如果你還沒有執行 PARENTID 語句,FB 將使用零。此外,OPENKILLNAMERENAME 語句在語句執行後始終自動將 PARENTID 值重置為零。

注意:某些其他 FB 語句和函式(如 FOLDER)不使用目錄 ID 號,也不關注 PARENTID 值。另一種說法是:這些語句和函式始終表現得好像目錄 ID 號為零。

這三者如何相互作用

[編輯 | 編輯原始碼]

FB 以以下方式使用路徑名、目錄引用號和目錄 ID 號來識別你所指示的檔案或目錄。

  • 如果路徑名是一個 完整路徑名,則忽略目錄引用號和目錄 ID 號。專案完全由路徑名指定。(請注意,如果有兩個已安裝的卷都具有 相同的卷名,則完整路徑名可能不明確。)如果路徑名是一個 部分路徑名(或未指定),則使用目錄
  • 引用號和目錄 ID 號一起識別一個 基本目錄。然後,相對於該基本目錄找到由部分路徑名標識的專案(或者,如果沒有指定路徑名,則該專案就是基本目錄本身)。基本目錄的確定方式如下。
    • 如果目錄 ID 號為 ,則完全根據目錄引用號確定基本目錄,如上表中的“目錄解釋”列所示。
    • 如果目錄 ID 號為 非零,則使用目錄引用號和目錄 ID 號一起識別基本目錄。在這種情況下,基本目錄的卷由目錄引用號指示(如表中的“卷解釋”列所示),目錄 ID 號識別該卷內的目錄。

其他指定專案的方式

[編輯 | 編輯原始碼]

當你呼叫 MacOS 工具箱例程時,在指定檔案或資料夾時,並不總是需要使用上面討論的三種資料項。在許多工具箱呼叫中,標識檔案或資料夾的首選方法是使用 fileSpec,它是一個 70 位元組的記錄,包含卷引用號、目錄 ID 號和專案的名稱。要跟蹤可能不在當前已安裝捲上或可能已重新命名或移動到不同資料夾的專案,首選方法是使用別名記錄。有關 fileSpec 和別名記錄的完整討論,請參考 Inside Macintosh: Files

請注意,許多 MacOS 工具箱例程也支援使用路徑名、目錄引用號(通常稱為 ioVRefNum) 和目錄 ID 號,使用與上面討論的完全相同的互動規則。

華夏公益教科書