2 个不稳定版本
0.2.0 | 2020年3月19日 |
---|---|
0.1.0 | 2019年5月3日 |
#131 in 操作系统
46,882 每月下载量
用于 32 个 crate(直接使用 15 个)
12KB
85 行
filesize
Cross-platform physical disk space use retrieval for Rust.
概要
pub trait PathExt {
fn size_on_disk(&self) -> std::io::Result<u64>;
fn size_on_disk_fast(&self, metadata: &Metadata) -> std::io::Result<u64>;
}
impl PathExt for std::path::Path;
pub fn file_real_size<P: AsRef<std::path::Path>>(path: P) -> std::io::Result<u64>;
pub fn file_real_size_fast<P: AsRef<std::path::Path>>(
path: P,
metadata: &Metadata
) -> std::io::Result<u64>;
描述
filesize
抽象出平台特定的方法来确定文件实际使用的空间,考虑了文件系统压缩和稀疏文件。
它提供了两个独立函数,file_real_size
和 file_real_size_fast
,以及从版本 0.2 开始,一个名为 size_on_disk
和 size_on_disk_fast
的同名函数的 std::path::Path
扩展特质。
_fast
变体接受一个 std::fs::Metadata
引用,如果平台支持,将用于便宜地计算磁盘大小。这适用于目录遍历等场景,其中无论如何都可用元数据,并且元数据需要用于其他目的。
示例
use std::path::Path;
use filesize::PathExt;
let path = Path::new("Cargo.toml");
let metadata = path.symlink_metadata()?;
let realsize = path.size_on_disk()?;
let realsize = path.size_on_disk_fast(&metadata)?;
// Older interface
use filesize::{file_real_size, file_real_size_fast};
let realsize = file_real_size(path)?;
let realsize = file_real_size_fast(path, &metadata)?;
平台特定行为
在 Unix 平台上,这是一个对 std::fs::symlink_metadata()
和 std::os::unix::fs::MetadataExt
的薄包装,简单地返回 blocks() * 512
。 _fast
函数完全忽略文件路径,并直接使用传递的元数据。
在 Windows 上,它包装了 GetCompressedFileSizeW()
,而 _fast
函数完全忽略传递的元数据。
在其他平台上,它调用 std::fs::symlink_metadata()
并只返回 len()
,而 _fast
变体也忽略路径,直接使用传入的元数据。
依赖关系
~175KB