.NET无需P/Invoke与O(N)I/O,能否单次返回带元数据对象集合?
问题解答
在不使用P/Invoke的情况下,.NET中不存在单次调用就能返回携带完整元数据的文件/文件夹对象集合(如FileInfo或DirectoryInfo实例)的方法。
具体说明:
- .NET的
Directory.EnumerateFiles/EnumerateDirectories等系列方法仅返回路径字符串,不会附带任何文件元数据; - 若通过枚举得到的路径逐个构造
FileInfo/DirectoryInfo实例,每个实例的属性(如大小、时间戳、文件属性)在首次访问时都会触发额外的I/O调用,无法避免O(N)的开销; - 尽管底层Win32 API(如
FindFirstFile)能一次性获取完整的文件元数据,但.NET的上层封装并未提供直接利用这些元数据生成对象集合的公开API。
内容的提问来源于stack exchange,提问作者Seva Alekseyev
相关产品推荐
相关产品推荐

