You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下STDIN输入路径至WalkDir无效问题排查与修复

问题原因
  1. 输入包含末尾换行符:io::stdin().read_line()会将用户输入时按下的回车(Windows下为\r\n,类Unix系统为\n)一并读取到字符串中,导致传入WalkDir::new()的路径末尾多了不可见的换行字符。系统中不存在带换行的目录,因此遍历无输出。
  2. 多余的反斜杠替换:Windows路径的单反斜杠\在Rust运行时字符串中无需转义(仅在编写字符串字面量时需要),手动替换为\\会把原本正确的路径变成双重反斜杠,进一步导致路径无效。
修复方案

对读取的输入字符串做末尾空白截断,同时移除多余的反斜杠替换逻辑:

use std::io;
use walkdir::WalkDir;

fn main() {
    let mut some_dir = String::new(); 

    io::stdin()
        .read_line(&mut some_dir)
        .expect("Invalid Input");

    // 移除首尾空白字符(含换行符)
    let some_dir = some_dir.trim();

    for entry in WalkDir::new(some_dir).into_iter().filter_map(|file| file.ok()) {
        println!("{}", entry.path().display());
    }
}

补充说明

  • 如果只想精准移除末尾的换行符(保留路径首尾的合法空格),可以用trim_end_matches(&['\n', '\r'][..])替代trim()。
  • Rust的WalkDir对Windows路径有原生支持,直接使用用户输入的单反斜杠路径即可,无需手动转义。

内容的提问来源于stack exchange,提问作者mathless-generation

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 12:42:03