在Rust中能否通过已打开的std::fs::File对象获取文件路径?
问题解答
直接通过std::fs::File实例的内置方法无法获取文件的完整路径——标准库的File类型本身并未存储路径信息,std::fs::Metadata也确实不包含路径相关数据。
如果不想单独存储路径,可参考以下方案:
- 自行封装结构体,将
File实例与对应的路径绑定,后续需要路径时直接从结构体中读取 - 在类Unix系统中,可通过读取
/proc/self/fd/<fd>符号链接获取路径(需借助std::os::unix::io::AsRawFdtrait将File转为文件描述符),但该方法仅适用于Unix-like平台,Windows无法使用 - 借助第三方crate(如
file-path)实现,但引入外部依赖会增加项目复杂度
内容的提问来源于stack exchange,提问作者Fomalhaut
相关产品推荐
相关产品推荐

