Rust读取嵌套文件夹内的文件报路径不存在错误如何解决?
问题根因
- 变量名不匹配(仅针对你第一次写的代码)
你第一次的代码里定义的路径变量名为filename,但调用fs::read_to_string时传入的是未定义的path变量,这会直接导致编译不通过。 - 工作目录匹配错误
即便你修正了变量名,运行时依然会报找不到路径的错误,核心原因是:使用cargo run启动程序时,默认工作目录是项目根目录(Cargo.toml所在的文件夹),而非src源码目录。
你的assembly_files文件夹存放在src目录下,代码里写的./assembly_files/toyRISC.asm是相对于工作目录的路径,根目录下不存在该文件夹,所以触发NotFound错误。
修复方案
你可以任选一种方案解决:
- 方案一:修改路径为相对于项目根目录的正确路径
将路径改为./src/assembly_files/toyRISC.asm即可,修正后的代码参考:
use std::{fs, path::Path}; fn main() { let path = Path::new("./src/assembly_files/toyRISC.asm"); println!("路径为:{:?}", path); let result = fs::read_to_string(path).expect("请输入有效的文件名"); }
- 方案二:调整文件存放位置
将assembly_files文件夹从src目录移动到项目根目录,和src文件夹同级,你的原有代码不需要修改即可正常运行。
调试技巧
如果后续再遇到类似路径问题,可以在代码中加入以下逻辑打印当前工作目录,快速确认路径是否匹配:
use std::env; fn main() { println!("当前工作目录为:{:?}", env::current_dir().unwrap()); }
内容的提问来源于stack exchange,提问作者sherlock sampath
相关产品推荐
相关产品推荐

