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

3
这是我的文件夹结构。
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." 
}', src\main.rs:6:43
1个回答

2
当您创建一个相对于文件的路径时,例如Path::new("./assembly_files/toyRISC.asm");,该路径相对于调用可执行文件的文件夹。请注意,这不一定是可执行文件存储的文件夹!
如果您只需在项目根目录下运行cargo run来运行它,则需要将路径更改为Path::new("./src/assembly_files/toyRISC.asm");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接