我正在构建一个程序,可以接受文件路径(*.*
)和目录路径(./
,..
)。我希望能够检查提供的路径是文件还是目录。
您应该使用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
PathExt :: is_dir
,它是不稳定的,因此可能不是作者要寻找的内容,尽管它也能实现他们想要的功能。 - fjhstd::fs::File
或 std::path::Path
的一部分。 - XAMPPRockyis_file
方法。 - Shadirustc 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
./*.js
,它只会处理这些文件,但是如果用户想处理一个目录中包含的所有文件,则需要递归地处理它(我知道有一个名为walk_dir的模块可以实现此功能,但不太稳定)。或者,如果用户同时提供了文件链接和目录链接,则需要同时处理两者。 - XAMPPRocky