rust 文件系统::读取字符串(文件路径)错误123:InvalidFilename在硬编码时有效,但在传入具有等效字符串的变量时失败

pepwfjgg  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(127)

我的项目文件夹中有一些文本文件,它们和src文件夹在同一层,我有一个run函数,它可以获取用户输入,并从中生成一个readfile结构。

pub fn run() {
        loop {
            let file = ReadFile::println_recieve_h("What is the filepath?");
            let query = ReadFile::println_recieve_h("What phrase do you want to find?");
            let readfile = ReadFile::new(&file, &query);
            ...

下面是我为减少冗余而创建的helper函数(我相信我已经将问题隔离在这里了):

fn println_recieve_h(print: &str) -> String {
        println!("{print}");
        let mut input = String::new();
        std::io::stdin().read_line(&mut input).unwrap();
        input
    }

下面是调用故障点的函数

pub struct ReadFile{ query: String, file_path: String, contents: String }

impl ReadFile {
    //Builds a readfile struct with a path and phrase.
    fn new(file_path: &String, phrase: &String) -> ReadFile{
        use std::fs;
        ReadFile {  
            query: phrase.clone(), 
            file_path: file_path.clone(), 
            contents: fs::read_to_string(file_path).expect("ERROR 003: FILE NOT FOUND"), 
        }
    }

内容:文件系统::读取目标字符串(文件路径)。预期(“错误003:FILE NOT FOUND”)失败,但是硬编码字符串切片成功(我尝试过将字符串引用转换为切片)。内容:文件系统::读取目标字符串(“longtxt1.txt”)。预期(“错误003:未找到文件”)。
有没有人看到导致这一切的问题?我是铁 rust 新手。
我尝试过将引用转换为字符串切片,克隆引用等。我确保在控制台中输入时没有拼写错误。我将run函数中的文件硬编码为String::from(“longtxt1.txt”),这使得一切都可以正常工作。我相信这将问题与我使用helper函数隔离开来。

9cbw7uwe

9cbw7uwe1#

read_line在返回的字符串中包含了一个尾随换行符,而这个换行符不在文件名中。您需要修剪返回的字符串。

相关问题