2012-07-05 84 views
5

是否有辦法檢測單個文件的文件系統大小限制(例如胖32上的4GB)?如何檢測單個文件的文件系統大小限制

它必須在Windows操作系統上工作,但更好的是一個便攜式解決方案。檢測文件系統類型可能是一個解決方法,但我不知道你怎麼做。

有人可以幫我嗎?

預先感謝您 托比亞斯

+0

當然,我能想到的查詢在Windows文件系統的名*的非便攜的方式,但我不認爲正確的滿足您的要求... – reuben

+0

現在可能會解決我的問題 - 但這會讓我產生一種對這個問題有「醜陋」解決方案的不安感覺。如果沒有別的辦法,那也是無法幫助的。 –

+1

...但至少爲你尋找更好,更清潔的選擇而感到自豪。許多開發人員不會這樣做... – reuben

回答

3

您可以檢測文件系統類型,在Windows上GetVolumeInformation

+1

...或通過WMI,如果需要的話。儘管(例如NTFS,FAT,FAT32,EXFAT,CDFS,UDF等)您需要對通常支持的文件系統的知識進行硬編碼。 – reuben

+0

@ruben:是的,但看過http://msdn.microsoft.com/en-us/library/windows/desktop/aa364407%28v=vs.85%29.aspx後,我真的沒有看到更好的方法。也許IFS工具包知道更多的IOCTL代碼,雖然可能有幫助... – Anders

0

您可以通過boost::space()得到容量限制,或者直接使用POSIX fstatvs()

至於對個別文件大小的限制......想到的唯一便攜式答案是醜陋的蠻力嘗試創建大和更大的文件直到失敗,因爲它是昂貴的(如果容量已經有限,則不可能)。

+1

這可能會提供可用空間的數量,但不一定是文件系統的任何固有實施限制... – reuben

+0

相當。不過,我有點困惑,因爲固有的地址限制可能會引起興趣,而不是容量。 –

+0

考慮具有超過4 GB可用空間的文件系統,但仍不允許創建大於4 GB的文件。在嘗試創建任何這樣的文件之前,這可能對預先了解這一點很重要... – reuben