2017-05-30 116 views
3

德爾福有沒有方法檢查文件是否有任何備用數據流?如何檢查文件是否具有備用數據流?

+0

我不明白。 「其他數據流」是什麼意思?單個文件成爲單個流。我從來沒有聽說過一個文件通過多個流訪問。 –

+0

@JerryDodge:我沒有密切關注他們的歷史,但我認爲輔助/備用數據流的存在時間與NTFS一樣長 - 請參閱https://blogs.technet.microsoft.com/askcore/2013/03/ 24/alternate-data-streams-in-ntfs /# – MartynA

+1

幾乎每個文件都有多個數據流:http://www.ntfs.com/ntfs-permissions-security-descriptor.htm –

回答

5

看一看在Win32 API FindFirstStreamW()FindNextStreamW()功能:

枚舉與指定的文件或目錄在::$DATA流類型第一流的。

繼續由先前調用FindFirstStreamW功能開始流搜索。

然而,一個文件或目錄可能有除了::$DATA其他流類型,這是不是在Win32 API中枚舉的,他們是內部的NTFS本身。

有關更多詳細信息,請參閱MSDN。

Using Streams

File Streams

要列舉非$DATA流,你就必須直接讀取文件系統,如用BackupRead()BackupSeek()。有關詳細信息,請參閱CodeProject上的Enumerating Alternate Data Streams

+0

謝謝。但是,你知道'CopyFileEx'是否會複製除$ DATA之外的其他流嗎?我想要的是獲取'CopyFileEx'將傳輸的所有數據的大小,但在調用函數之前。 –

+1

@MarusNebunu是的,'CopyFileEx'複製ADS流,如文檔中所述:「*此功能保留擴展屬性,OLE結構化存儲,** NTFS文件系統備用數據流**,安全資源屬性和文件屬性。 「嘗試使用FindFirstFile()或GetFileAttributesEx()來查看它是否報告包括流在內的完整文件大小。或者,只是忘了事先檢索大小,並讓CopyFileEx'回調在複製時告訴你。 –

相關問題