#临时文件 #文件路径 #提交 #最终 #暂存 #创建 #已提交

staged_file

创建一个临时文件,然后可以将其提交到最终路径

2 个不稳定版本

0.5.0 2024 年 5 月 15 日
0.4.0 2023 年 8 月 28 日
0.3.0 2023 年 8 月 27 日
0.2.0 2021 年 10 月 31 日
0.1.0 2021 年 3 月 29 日

#557 in 文件系统

MIT/Apache

17KB
293

StagedFile

StagedFile 帮助将数据写入临时文件,并提供将临时文件提交到所需最终文件路径的选项。

如果所需最终文件路径存在文件,则提交函数调用期间将覆盖该文件。

目前仅支持 UNIX。

安装

[dependencies]
staged_file = "0.5.0"

示例

use staged_file::StagedFile;
use std::fs::File;
use std::io::{prelude::*, LineWriter};
use std::path::Path;

let final_path = Path::new("/a/file/path");
let staged_file = StagedFile::with_final_path(&final_path)?;

let text = b"Hello World!";

{
    // The LineWriter code is in a block so that `&staged_file` is not considered
    // borrowed at the end of the block. Another way to get back the
    // `staged_file` is to call `line_writer.into_inner()`.
    let mut line_writer = LineWriter::new(&staged_file);
    line_writer.write_all(text)?;
    line_writer.flush()?;
}

staged_file.commit()?;

assert_eq!(std::fs::read(final_path)?, text);

如果没有调用 commit() 方法,则暂存文件内容将被丢弃。

其他库

该库作为依赖项在此 crate 中用于创建临时目录。

一个跨平台的原子文件写入库。

许可证

根据您的选择,在 Apache License 2.0 或 MIT 许可证下许可。

贡献

除非您明确声明,否则任何旨在包含在作品中并由您提交的贡献,根据 Apache-2.0 许可证定义,应如上所述双重许可,不附加任何额外条款或条件。

依赖关系

~3–12MB
~146K SLoC