rust - 用户输入结合 std::path 检查路径
问题描述
我想测试用户输入提供的文件是否存在以下代码:
let mut path_file = String::new();
// input example : path_file = input("C:/Users/.../.../.../file.DAT");
match io::stdin().read_line(&mut path_file) {
Ok(n) => {
let path: bool = Path::new(&path_file).exists();
// let path: bool = Path::new("C:/Users/.../.../.../file.DAT").exists();
if path {
read_file_fo(Path::new(&path_file));
} else {
println!("...");
}
}
Err(error) => println!("error : {}", error),
}
但是,条件总是错误的。如果我直接硬编码路径:
let path: bool = Path::new("C:/Users/.../.../.../file.DAT").exists();
代替 :
let path: bool = Path::new(&path_file).exists();
脚本运行良好。
有人可以解释为什么吗?
解决方案
read_line
保留尾随换行符,因此将其修剪掉:
let trimmed_path_file = path_file.trim();
let path = Path::new(&trimmed_path_file);
if path.exists() {
read_file_fo(path);
} else {
println!("Path does not exist.");
}
推荐阅读
- javascript - Discord.js 删除角色错误
- tensorflow - TensorFlow 对象检测 API 中的超参数优化
- jquery - 尝试在没有 nuget 的情况下安装 jquery-ui
- asp.net-core - How do I disable ASP.NET Core's "Razor Pages"?
- sql - ORACLE-SQL:如何计算数字类型的 2 次?
- android - 恢复活动时恢复 PagedListAdapter 位置
- reactjs - React form input won't let me change value
- authorization - 在 WSO2 身份服务器管理控制台上使用策略编辑器创建 XACML 策略时出错 - wso2is-km-5.3.0
- javascript - 第一个值 onchange 不适用于下拉菜单
- magento - magento 2.2管理面板登录错误