【问题标题】:How to check if a given path is a file or directory?如何检查给定路径是文件还是目录?
【发布时间】:2015-07-30 07:20:18
【问题描述】:

我正在构建一个程序,它应该能够获取文件 (*.*) 和目录 (./..) 的路径。我希望能够检查提供的路径是文件还是目录。

【问题讨论】:

  • 我不清楚。请提供有关用例的更多详细信息。
  • @kebs 主要用例是,如果用户提供一个文件,或者只提供某种类型目录中的所有文件,即:./*.js,它只能通过这些文件工作,但是如果用户想要一个目录中包含的所有文件,我需要能够递归地遍历它(我知道有 walk_dir 可以做到这一点,但它是不稳定的)。或者如果用户将两者结合起来,并提供了文件链接和目录链接。

标签: file file-io path directory rust


【解决方案1】:

你应该使用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

【讨论】:

  • 作为参考,Rust API 文档有 reasonable search results 用于“dir”。撰写本文时的第三个结果是此答案中的解决方案。
  • @Shepmaster 是的,但公平地说,第二个结果是PathExt::is_dir,它是不稳定的,因此可能不是提问者想要的,尽管它也可以满足他们的要求。跨度>
  • 这就是为什么我说“合理”而不是“伟大”。 ^_^ 希望只会越来越好!我主要想指出 API 参考也可以是一个很好的资源。
  • 我正在查看 Rust 文档,但我认为它会成为 std::fs::Filestd::path::Path 的一部分。
  • 对于 Rust 1.5+,PathBuf 有 is_file
猜你喜欢
  • 2018-12-18
  • 2013-03-15
  • 2011-12-26
  • 2013-08-14
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 2017-08-16
相关资源
最近更新 更多