我正在为自己编写一个小实用程序,它需要能够检查文件是否是符号链接。
FileType::is_symlink
在 Windows 上使用总是返回false
(适用于目录的符号链接和常规文件)。
使用常规的 Rust 2018 版本,有什么方法可以检查文件是否是 Windows 上的符号链接?
在我的搜索中,我遇到了:FileTypeExt
- 但是据我所知,这需要你使用不稳定的 Rust。
我正在为自己编写一个小实用程序,它需要能够检查文件是否是符号链接。
FileType::is_symlink
在 Windows 上使用总是返回false
(适用于目录的符号链接和常规文件)。
使用常规的 Rust 2018 版本,有什么方法可以检查文件是否是 Windows 上的符号链接?
在我的搜索中,我遇到了:FileTypeExt
- 但是据我所知,这需要你使用不稳定的 Rust。
使用File::metadata()
orfs::metadata()
来获取文件类型将始终返回 false for,FileType::is_symlink()
因为此时该链接已被关注。文档指出:
底层
Metadata
结构需要用fs::symlink_metadata
函数而不是fs::metadata
函数来检索。该fs::metadata
函数遵循符号链接,因此is_symlink
将始终返回false
目标文件。
use std::fs;
fn main() -> std::io::Result<()> {
let metadata = fs::symlink_metadata("foo.txt")?;
let file_type = metadata.file_type();
let _ = file_type.is_symlink();
Ok(())
}