可能重复:
获取磁盘上文件的大小
有没有办法使用 C# / windows 来检索磁盘上特定文件使用的实际字节数?
我的应用程序实现了“监视”文件夹,类似于 FileSystemWatcher。一些监视文件夹存在于共享存储(网络和光纤通道 SAN)上,另一些存在于本地连接的存储上。
文件被完全不受我控制的进程复制到监视文件夹中,大小从 1 GB 到 > 500 GB 不等。由于共享文件系统的性质,希望在“独占”打开文件(FileMode.Open、FileAccess.Read、FileShare.None)时出现异常也不起作用。
在文件完全复制/关闭之前,这些监视文件夹不应该采取行动 - 否则下游可能会出现问题。
为了获得磁盘上使用的“真实”文件大小,我尝试过:
- System.IO.FileInfo
- GetFileSizeEx (kernel32 p/invoke)
- FindFirstFileEx (kernel32 p/invoke)
- GetCompressedFileSize & GetDiskFreeSpace (kernel32 p/invoke)
任何建议将不胜感激。好像我正在处理 Windows 操作系统的限制?