共用方式為


檔案串流 (本機檔案系統)

數據流是位元組序列。 在NTFS檔案系統中,數據流包含寫入檔案的數據,並提供檔案比屬性和屬性更多的資訊。 例如,您可以建立包含搜尋關鍵詞的數據流,或建立檔案之用戶帳戶的身分識別。

與檔案相關聯的每個數據流都有自己的配置大小、實際大小和有效數據長度:

  • 配置大小是保留給數據流的磁碟空間量。
  • 實際大小是呼叫端所使用的位元元數目。
  • 有效的數據長度 (VDL) 是從數據流的配置大小初始化的位元元組數目。

每個數據流也會維護自己的壓縮、加密和疏鬆狀態。 檔案上的 FILE_ATTRIBUTE_SPARSE_FILE 屬性會設定在 dwFileAttributesWIN32_FIND_DATA 結構的成員中,FindFirstFileFindFirstFileEx,以及 FindNextFile 函式。 GetFileAttributesGetFileAttributesExGetFileAttributesTransactedGetFileInformationByHandleGetFileInformationByHandleEx 如果未指定數據流,則會傳回預設數據流的疏鬆狀態。

沒有與數據流相關聯的檔案時間。 檔案的檔案時間會在檔案中的任何數據流更新時更新。

每個數據流會維護機會鎖定。 每個數據流也會維護共用模式。 在檔案上要求刪除存取權時,作系統會檢查檔案中所有開啟數據流上的刪除存取權。 如果另一個進程在沒有 FILE_SHARE_DELETE 許可權的情況下開啟數據流,則您無法開啟檔案以進行刪除存取。

如果複製的檔案具有數據流,且使用網路重新導向器,則只有在用戶端同時具有讀取許可權和讀取屬性許可權時,才能複製檔案。

數據流的命名慣例

從 Windows 殼層命令行指定時,數據流的完整名稱為 “filename數據流名稱數據流類型”,如下列範例所示:“myfile.dat:stream1:$DATA”。

對於檔名而言,任何合法字元也都是數據流名稱的合法字元,包括空格。 如需詳細資訊,請參閱 命名檔案。 數據流類型(也稱為屬性類型程式代碼)是NTFS檔案系統的內部類型。 因此,用戶無法建立新的數據流類型,但可以開啟現有的NTFS檔案系統類型。 數據流類型規範值一律以貨幣符號 ($) 符號開頭。 如需串流類型清單,請參閱下方。

根據預設,預設數據流未命名。 若要完整指定預設數據流,請使用 「filename::$DATA」。,其中 $DATA 是數據流類型。 這相當於 「filename」。 您可以使用 檔案命名慣例,在檔案中建立具名資料流,。 請注意,“$DATA” 是合法的數據流名稱。 例如,名為 「sample」 檔案上名為 「$DATA」 的數據流完整名稱會是 「sample:$DATA:$DATA」。 如果您在相同檔案上建立名為 「bar」 的數據流,其完整名稱會是 「範例:bar:$DATA」。。

建立和使用具有單字元名稱的檔案時,請使用句號加上句號,後面接著反斜杠 (.) 或使用完整路徑名稱。 這樣做的原因是 Windows 會將一個字元檔名視為驅動器號。 使用相對路徑指定驅動器號時,冒號會將驅動器號與路徑分開。 當單字元名稱是驅動器號或檔名有模棱兩可時,Windows 會假設冒號後面的字串是有效的路徑,即使驅動器號無效,Windows 還是假設它是驅動器號的驅動器號。

數據流類型

以下是NTFS資料流類型的清單,也稱為屬性類型代碼。 某些數據流類型是NTFS的內部類型,而且其格式為未記載。

數據流類型 描述
::$ATTRIBUTE_LIST 包含組成檔案的所有屬性清單,並識別每個屬性的位置。
::$BITMAP 索引用來管理目錄 B 型樹狀結構可用空間的點陣圖。 b 型樹狀結構是以 4 KB 區塊管理(不論叢集大小為何),這可用來管理這些區塊的配置。 此資料流類型存在於每個目錄上。
::$DATA 數據流。 默認數據流沒有名稱。 您可以使用 FindFirstStreamWFindNextStreamW 函式來列舉數據流。
::$EA 包含擴充屬性數據。
::$EA_INFORMATION 包含擴充屬性的支持資訊。
::$FILE_NAME 檔案的名稱,以 Unicode 字元為單位。 這包括檔案的簡短名稱,以及任何硬式連結。
::$INDEX_ALLOCATION 目錄的數據流類型。 用來實作大型目錄的檔名配置。 此數據流代表目錄本身,並包含目錄的所有數據。 此類型的數據流變更會記錄到NTFS變更日誌。 $INDEX_ALLOCATION 數據流類型的默認數據流名稱為 $I 30,因此“DirName”, “DirName::$INDEX_ALLOCATION”, 和 “DirName:$I 30:$INDEX_ALLOCATION” 都相等。
::$INDEX_ROOT 此數據流代表索引之 b 型樹狀結構的根目錄。 此資料流類型存在於每個目錄上。
::$LOGGED_UTILITY_STREAM 類似於 ::$DATA,但作業會記錄至NTFS變更日誌。 EFS 和 交易式NTFS (TxF)使用。 EFS 的 “:StreamName:$StreamType” 組是 “:$EFS:$LOGGED_UTILITY_STREAM”,而 TxF 則為 “:$TXF_DATA:$LOGGED_UTILITY_STREAM”。
::$OBJECT_ID 用來識別鏈接追蹤服務的檔案的16位元組識別碼。
::$REPARSE_POINT 重新分析點 數據。

 

使用數據流