本文簡要介紹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 FileExt.read_exact_at用法及代碼示例
- Rust FileTypeExt.is_char_device用法及代碼示例
- Rust File.open用法及代碼示例
- Rust File.sync_data用法及代碼示例
- Rust FileType.is_symlink用法及代碼示例
- Rust File.options用法及代碼示例
- Rust FileExt.write_at用法及代碼示例
- Rust File.create用法及代碼示例
- Rust File.sync_all用法及代碼示例
- Rust FileType.is_file用法及代碼示例
- Rust File.set_len用法及代碼示例
- Rust FileType.is_dir用法及代碼示例
- Rust FileExt.read_at用法及代碼示例
- Rust File.metadata用法及代碼示例
- Rust FileTypeExt.is_fifo用法及代碼示例
- Rust FileExt.seek_read用法及代碼示例
- Rust File.set_permissions用法及代碼示例
- Rust File.try_clone用法及代碼示例
- Rust FileTypeExt.is_socket用法及代碼示例
- Rust FileTypeExt.is_block_device用法及代碼示例
- Rust FileExt.seek_write用法及代碼示例
- Rust FileExt.write_all_at用法及代碼示例
- Rust Formatter.precision用法及代碼示例
- Rust Formatter.debug_list用法及代碼示例
- Rust Formatter.sign_minus用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Struct std::fs::File。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。