sherlock sampath
sherlock sampath

Reputation: 91

How to read file from another(nested) folder?

This is my folder structure.

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

Why is this not enough or where is the error? I tried with raw &str:

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

Also tried using Path and OsStr , shown in code below.

// 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");
}

This is the error

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

Upvotes: 3

Views: 3558

Answers (1)

fygesser
fygesser

Reputation: 93

When you create a relative Path to a file, e.g. Path::new("./assembly_files/toyRISC.asm"); the path is relative to the folder from which you call the executable. Note that this isn't necessarily the folder where the executable is stored!

If you simply run cargo run at the root of your project to run it, then you need to change the path to Path::new("./src/assembly_files/toyRISC.asm");

Upvotes: 2

Related Questions