当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust File用法及代码示例


本文简要介绍rust语言中 Struct std::fs::File 的用法。

用法

pub struct File { /* fields omitted */ }

对文件系统上打开文件的引用。

File 的实例可以根据打开它的选项来读取和/或写入。文件还实现 Seek 以更改文件内部包含的逻辑光标。

文件超出范围时会自动关闭。 Drop 的实现会忽略关闭时检测到的错误。如果必须手动处理这些错误,请使用方法 sync_all

例子

创建一个新文件并向其写入字节(您也可以使用 write() ):

use std::fs::File;
use std::io::prelude::*;

fn main() -> std::io::Result<()> {
    let mut file = File::create("foo.txt")?;
    file.write_all(b"Hello, world!")?;
    Ok(())
}

将文件的内容读入 String (您也可以使用 read ):

use std::fs::File;
use std::io::prelude::*;

fn main() -> std::io::Result<()> {
    let mut file = File::open("foo.txt")?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    assert_eq!(contents, "Hello, world!");
    Ok(())
}

使用缓冲的 Read er 读取文件的内容会更有效。这可以通过 BufReader<R> 来完成:

use std::fs::File;
use std::io::BufReader;
use std::io::prelude::*;

fn main() -> std::io::Result<()> {
    let file = File::open("foo.txt")?;
    let mut buf_reader = BufReader::new(file);
    let mut contents = String::new();
    buf_reader.read_to_string(&mut contents)?;
    assert_eq!(contents, "Hello, world!");
    Ok(())
}

请注意,虽然读取和写入方法需要 &mut File ,但由于 Read Write 的接口,&File 的持有者仍然可以通过采用 &File 的方法或通过检索底层操作系统对象并以这种方式修改文件。此外,许多操作系统允许不同进程同时修改文件。避免假设持有 &File 意味着文件不会更改。

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Struct std::fs::File。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。