Rust编程中的文件操作

文件操作通常包括I / O操作。Rust为我们提供了处理所有这些操作的不同方法。

打开

Rust提供了一种开放的静态方法,我们可以使用该方法以只读模式打开文件。

示例

考虑下面显示的代码:

use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
fn main() {
   // 创建所需文件的路径
   let path = Path::new("out.txt");
   let display = path.display();
   let mut file = match File::open(&path) {
      Err(why) => panic!("unable to open {}: {}", display, why),
      Ok(file) => file,
   };
   let mut s = String::new();
   match file.read_to_string(&mut s) {
      Err(why) => panic!("unable to read {}: {}", display, why),
      Ok(_) => print!("{} it contains:\n{}", display, s),
   }
   // `file` goes out of scope, and the "out.txt" file gets
   closed
}
输出结果

上面代码的输出是

out.txt contains:
Hello World!

创造

create方法以只写模式打开文件,如果该文件已经存在,则旧内容将被销毁。

示例

static RANDOM_TEXT: &str = "Lorem ipsum dolor sit AMEN, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.";
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
fn main() {
   let path = Path::new("random_text.txt");
   let display = path.display();
   // 以仅写模式打开文件,返回io :: Result
   let mut file = match File::create(&path) {
      Err(why) => panic!("couldn't create {}: {}", display, why),
      Ok(file) => file,
   };
   // 将`RANDOM_TEXT`字符串写入`file`,返回 
   `io::Result<()>`
   match file.write_all(RANDOM_TEXT.as_bytes()) {
      Err(why) => panic!("couldn't write to {}: {}", display, why),
      Ok(_) => println!("successfully wrote to {}", display),
   }
}
输出结果

当我们运行以下命令时:

cat random_text.txt

我们得到的输出是:

Lorem ipsum dolor sit AMEN, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.