本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。