如何从另一个(嵌套)文件夹读取文件?



这是我的文件夹结构

src
├── main.rs
└── assembly_files
└── toyRISC.asm

为什么这是不够的或错误在哪里?我尝试了原始&str:

let filename = "./assembly_files/toyRISC.asm";
let result = fs::read_to_string(path).expect("Please provide valid file name");

也尝试使用PathOsStr,如下面的代码所示。

// main.rs
use std::{ffi::OsStr, fs, path::Path};
fn main() {
let filename = "assembly_files/toyRISC.asm";
let path = Path::new("./assembly_files/toyRISC.asm");
println!("{:?}", path);
let result = fs::read_to_string(path).expect("Please provide valid file name");
}

错误

thread 'main' panicked at 'Please provide valid file name: Os { code: 3, kind: NotFound, message: "The system cannot find the path specified." 
}', srcmain.rs:6:43

当您创建一个文件的相对路径时,例如Path::new("./assembly_files/toyRISC.asm");,该路径是相对于您调用可执行文件的文件夹的。注意,这并不一定是存储可执行文件的文件夹!

如果您只是在项目的根目录下运行cargo run来运行它,那么您需要将路径更改为Path::new("./src/assembly_files/toyRISC.asm");

最新更新