如何检查给定路径是文件还是目录?

问题描述 投票:0回答:2

我正在构建一个程序,它应该能够同时采用文件路径(

*.*
)和目录(
./
..
)。我希望能够检查提供的路径是文件还是目录。

file file-io path directory rust
2个回答
36
投票

你应该使用

std::fs::metadata

use std::fs::metadata;

fn main() {
    let md = metadata(".").unwrap();
    println!("is dir: {}", md.is_dir());
    println!("is file: {}", md.is_file());
}

输出:

is dir: true
is file: false

0
投票

rustc 1.67.1 (d5a82bbd2 2023-02-07)
开始,您可以使用
std::path::PathBuf

let path = PathBuf::from(".");
let is_dir = path.is_dir();
let is_file = path.is_file();
println!("is_dir: {is_dir}");
println!("is_file : {is_file}");

这是使用 REPL 执行代码时的输出:

Welcome to evcxr. For help, type :help
>> use std::path::PathBuf;
>> let path = PathBuf::from(".");
>> let is_dir = path.is_dir();
>> let is_file = path.is_file();
>> println!("is_dir: {is_dir}");
is_dir: true
>> println!("is_file : {is_file}");
is_file : false
© www.soinside.com 2019 - 2024. All rights reserved.