如何在Rust中读取和写入文件在Rust中,这个任务是通过标准库中的文件系统模块(std::fs)完成的。在本文中,我将向您介绍如何使用该模块。为了演示这个任务,我准备了一些示例代码,也可以在GitHub上找到。使用Rust时,失败的函数会返回Result类型。特别是文件系统模块返回一个特殊类型std::io::Result。有了这些知识,您就可以从main()函数返回相同的类型:fnmain()->std::io::Result<()>{/*...codecomeshere...*/Rust文件写入在Rust中执行文件I/O操作相对容易。写入文件可以简化为一行:usestd::fs;fs::write("favorite_websites.txt",b"opensource.com")?;Ok(())使用错误传播运算符(???),将错误信息传递给调用函数,然后调用函数可以处理错误。由于main()是调用堆栈中唯一的其他函数,如果写入操作失败,将向控制台输出传递一条错误消息。fs::write函数的语法非常高级。第一个参数是文件路径,它必须是std::path::Path类型。第二个参数是内容,其实就是一个字节切片([u8])。Rust将传递的参数转换为正确的类型。幸运的是,这些类型基本上是下面示例中处理的唯一类型。使用文件描述符类型std::fs::File可以实现更简洁的写操作访问:letmutfile=fs::File::create("favorite_websites.txt")?;file.write_all(b"opensource.com\n")?;Ok(())由于该文件类型实现了Write特性,您可以使用相关方法来写入文件。但是,create方法可以覆盖现有文件。要获得对文件描述符的更多控制,必须使用std::fs::OpenOptions类型。这提供了一种类似于其他语言的打开模式:letmutfile=fs::OpenOptions::new().append(true).open("favorite_websites.txt")?;file.write_all(b"sourceforge.net\n")?;Rust文件读取适用于写入和读取。阅读也可以用一个简单的一行来完成:letwebsites=fs::read_to_string("favorite_websites.txt")?;上面一行读取文件的内容并返回一个字符串。除了读取字符串,还有std::fs::read()函数,如果文件包含二进制数据,它会将数据读取为字节向量。下一个示例显示如何将文件的内容读入内存,然后逐行打印到控制台:letfile=fs::File::open("favorite_websites.txt")?;让lines=io::BufReader::new(file).lines();forlineinlines{ifletOk(_line)=line{println!(">>>{}",_line);}}总结如果您已经熟悉其他编程语言,您可能已经注意到没有关闭函数(或类似函数)来释放文件句柄。在Rust中,当关联的变量超出范围时,文件句柄被释放。要定义关闭行为,可以在文件表示周围应用范围({})。我建议您熟悉Read和Write特性,因为您可以在许多其他类型中找到此特性的实现。