栏目分类rust文件读写的实现示例
你的位置:MAX Exchange Token中文网 > Astar中文网 >rust文件读写的实现示例
发布日期:2025-01-03 18:48 点击次数:108
std::fs模块提供了结构体File,它表示一个文件。
一、打开文件
结构体File提供了open()函数open()以只读模式打开文件,如果文件不存在,则会抛出一个错误。如果文件不可读,那么也会抛出一个错误。
范例
std::fs::File的open函数没有配套的close函数,因为Rust编译器可以在文件不再被使用时自动关闭文件。
二、创建文件
结构体File提供了create() 函数以只写模式打开文件。如果文件存在则清空旧内容;如果文件不存在则新建
范例
三、读取文件
(一)结构体File实现了Read特性Read特性提供了如下方法
读取一些字节到指定的缓冲区中,返回读取的字节数。读取的字节数等于缓冲区的长度
读取所有字节,直到此源中的 EOF 为止,然后将它们追加到 buf
读取所有字节,直到 EOF 为止,然后将它们追加到 buf。如果读取成功则返回读取的字节数,如果读取失败则抛出错误。
实例
范例
data.txt内容如下
简单教程简单编程
代码如下
运行结果如下
简单教程简单编程
(二)快捷函数
std::fs::read_to_string
将文件的全部内容读取为字符串。这是使用File::open和File::read_to_string 的便捷函数
实例
std::fs::read
将文件的全部内容读取为字节 vector。这是使用 File::open 和 read_to_end 的便捷函数
实例
以上两种方式是一次性读取,十分适合Web应用的开发。但是更多情况下文件的大小可能远超内存容量。所以不常使用。
四、写入文件
(一)结构体File实现了Write特性Write特性提供了如下方法
写入一个缓冲区,返回写入的字节数。这个函数会尝试写入 buf 的全部内容,但是整个写入可能不会成功,或者写入也会产生错误。
将整个缓冲区写入File。此方法将连续调用 write,直到没有更多数据要写入或返回非 ErrorKind::Interrupted 类型的错误为止。 在成功写入整个缓冲区或发生此类错误之前,此方法将不会返回
实例
范例
(二)快捷函数std::fs::write
把一个切片写入文件,如果文件不存在就会创建文件,如果文件存在就替换其内容。这是使用 File::create 和 write_all 的便捷函数
实例
执行程序之后,text.txt文件的内容将会被重写为FROM RUST PROGRAM。
五、追加内容到文件末尾
Write特性并没有提供函数用于追加内容但std::fs::OpenOptions结构体,可以配置文件打开方式。OpenOptions提供了append()用于设置追加模式
当文件的模式设置为 追加 之后,写入文件的内容就不会代替原先的旧内容而是放在旧内容的后面。
范例
OpenOptions除append权限以外还有read权限和write权限,如果我们想以读写权限打开一个文件可以这样写
实例
六、删除文件
std::fs 提供了函数 remove_file() 用于删除文件。
注意,删除可能会失败,即使返回结果为OK,也有可能不会立即就删除。
范例
打开当前目录,我们可以发现文件已经被删除了。
七、复制文件
Rust标准库没有提供任何函数用于复制一个文件为另一个新文件。但我们可以使用上面提到的函数和方法来实现文件的复制功能。下面的代码,我们模仿简单版本的 copy 命令
代码如下
data.txt 为我们想要复制的原文件路径data_new.txt 为我们想要的新文件路径
到此这篇关于rust文件读写的实现示例的文章就介绍到这了,更多相关rust文件读写内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:Rust读取配置文件的实现步骤Rust 配置文件内容及使用全面讲解如何使用bindgen将C语言头文件转换为Rust接口代码Rust 中的文件操作示例详解rust延迟5秒锁屏的实现代码rust 如何使用文件锁防止应用多开