當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。