Possible Duplicate:
Get Size of file on disk
有没有办法使用 C#/windows 检索磁盘上特定文件使用的实际字节数?
我的应用程序实现了“监视”文件夹,类似于 FileSystemWatcher。一些监视文件夹存在于共享存储(网络和光纤 SAN)上,其他则存在于本地连接的存储上。
文件被完全超出我控制的进程复制到监视文件夹中,大小从 1 GB 到 > 500 GB 不等。由于共享文件系统的性质,希望在“独占”打开文件(FileMode.Open、FileAccess.Read、FileShare.None)时出现异常也是行不通的。
在文件完全复制/关闭之前,这些监视文件夹不应采取操作 - 否则下游可能会出现问题。
为了获取磁盘上使用的“真实”文件大小,我尝试过:
- 系统.IO.FileInfo
- GetFileSizeEx(kernel32 p/invoke)
- FindFirstFileEx(kernel32 p/invoke)
- GetCompressedFileSize 和 GetDiskFreeSpace(kernel32 p/invoke)
如有任何建议,我们将不胜感激。我似乎遇到了 Windows 操作系统的限制?
最佳答案
没有 API 可以获取文件的“磁盘大小”,您必须根据您对磁盘几何结构的了解自行计算。
关于windows - 文件大小 - 磁盘上实际使用的字节数(未分配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959228/