Struct std::fs::Metadata

1.0.0 · source ·
pub struct Metadata(_);
Expand description

有关文件的元数据信息。

此结构体是从 metadatasymlink_metadata 函数或方法返回的,表示有关文件的已知元数据,例如其权限,大小,修改时间等。

Implementations§

source§

impl Metadata

1.1.0 · source

pub fn file_type(&self) -> FileType

返回此元数据的文件类型。

Examples
fn main() -> std::io::Result<()> {
    use std::fs;

    let metadata = fs::metadata("foo.txt")?;

    println!("{:?}", metadata.file_type());
    Ok(())
}
Run
source

pub fn is_dir(&self) -> bool

如果此元数据用于目录,则返回 true。 结果与 Metadata::is_file 的结果互斥,并且对于从 symlink_metadata 获得的符号链接元数据将为 false。

Examples
fn main() -> std::io::Result<()> {
    use std::fs;

    let metadata = fs::metadata("foo.txt")?;

    assert!(!metadata.is_dir());
    Ok(())
}
Run
source

pub fn is_file(&self) -> bool

如果此元数据用于常规文件,则返回 true。 结果与 Metadata::is_dir 的结果互斥,并且对于从 symlink_metadata 获得的符号链接元数据将为 false。

当目标只是读取 (或写入) 源时,可以读取 (或写入) 最可靠的测试源方法是打开它。 例如,仅使用 is_file 才能中断类似 Unix 的系统上的工作流,例如 diff <( prog_a )。 有关更多信息,请参见 File::openOpenOptions::open

Examples
use std::fs;

fn main() -> std::io::Result<()> {
    let metadata = fs::metadata("foo.txt")?;

    assert!(metadata.is_file());
    Ok(())
}
Run

如果此元数据用于符号链接,则返回 true

Examples
use std::fs;
use std::path::Path;
use std::os::unix::fs::symlink;

fn main() -> std::io::Result<()> {
    let link_path = Path::new("link");
    symlink("/origin_does_not_exist/", link_path)?;

    let metadata = fs::symlink_metadata(link_path)?;

    assert!(metadata.is_symlink());
    Ok(())
}
Run
source

pub fn len(&self) -> u64

返回此元数据用于的文件大小 (以字节为单位)。

Examples
use std::fs;

fn main() -> std::io::Result<()> {
    let metadata = fs::metadata("foo.txt")?;

    assert_eq!(0, metadata.len());
    Ok(())
}
Run
source

pub fn permissions(&self) -> Permissions

返回此元数据所针对的文件的权限。

Examples
use std::fs;

fn main() -> std::io::Result<()> {
    let metadata = fs::metadata("foo.txt")?;

    assert!(!metadata.permissions().readonly());
    Ok(())
}
Run
1.10.0 · source

pub fn modified(&self) -> Result<SystemTime>

返回此元数据中列出的最后修改时间。

返回的值对应于 Unix 平台上的 statmtime 字段和 Windows 平台上的 ftLastWriteTime 字段。

Errors

此字段可能并非在所有平台上都可用,并且在它不可用的平台上将返回 Err

Examples
use std::fs;

fn main() -> std::io::Result<()> {
    let metadata = fs::metadata("foo.txt")?;

    if let Ok(time) = metadata.modified() {
        println!("{time:?}");
    } else {
        println!("Not supported on this platform");
    }
    Ok(())
}
Run
1.10.0 · source

pub fn accessed(&self) -> Result<SystemTime>

返回此元数据的最后访问时间。

返回的值对应于 Unix 平台上的 statatime 字段和 Windows 平台上的 ftLastAccessTime 字段。

请注意,并非所有平台都会在文件的元数据中保留此字段的更新,例如,Windows 可以选择在访问文件时禁用此更新,而 Linux 同样具有 noatime

Errors

此字段可能并非在所有平台上都可用,并且在它不可用的平台上将返回 Err

Examples
use std::fs;

fn main() -> std::io::Result<()> {
    let metadata = fs::metadata("foo.txt")?;

    if let Ok(time) = metadata.accessed() {
        println!("{time:?}");
    } else {
        println!("Not supported on this platform");
    }
    Ok(())
}
Run
1.10.0 · source

pub fn created(&self) -> Result<SystemTime>

返回此元数据中列出的创建时间。

返回的值与从 4.11 开始的 Linux 内核上的 statxbtime 字段,在其他 Unix 平台上的 statbirthtime 字段以及在 Windows 平台上的 ftCreationTime 字段相对应。

Errors

此字段可能并非在所有平台上都可用,并且会在它不可用的平台或文件系统上返回 Err

Examples
use std::fs;

fn main() -> std::io::Result<()> {
    let metadata = fs::metadata("foo.txt")?;

    if let Ok(time) = metadata.created() {
        println!("{time:?}");
    } else {
        println!("Not supported on this platform or filesystem");
    }
    Ok(())
}
Run

Trait Implementations§

source§

impl Clone for Metadata

source§

fn clone(&self) -> Metadata

返回值的副本。 Read more
source§

fn clone_from(&mut self, source: &Self)

source 执行复制分配。 Read more
1.16.0 · source§

impl Debug for Metadata

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

使用给定的格式化程序格式化该值。 Read more
1.1.0 · source§

impl MetadataExt for Metadata

Available on Windows only.
source§

fn file_attributes(&self) -> u32

返回此元数据的 dwFileAttributes 字段的值。 Read more
source§

fn creation_time(&self) -> u64

返回此元数据的 ftCreationTime 字段的值。 Read more
source§

fn last_access_time(&self) -> u64

返回此元数据的 ftLastAccessTime 字段的值。 Read more
source§

fn last_write_time(&self) -> u64

返回此元数据的 ftLastWriteTime 字段的值。 Read more
source§

fn file_size(&self) -> u64

返回此元数据的 nFileSize{High,Low} 字段的值。 Read more
source§

fn volume_serial_number(&self) -> Option<u32>

🔬This is a nightly-only experimental API. (windows_by_handle #63010)
返回此元数据的 dwVolumeSerialNumber 字段的值。 Read more
🔬This is a nightly-only experimental API. (windows_by_handle #63010)
返回此元数据的 nNumberOfLinks 字段的值。 Read more
source§

fn file_index(&self) -> Option<u64>

🔬This is a nightly-only experimental API. (windows_by_handle #63010)
返回此元数据的 nFileIndex{Low,High} 字段的值。 Read more
1.1.0 · source§

impl MetadataExt for Metadata

Available on Unix only.
source§

fn dev(&self) -> u64

返回包含文件的设备的 ID。 Read more
source§

fn ino(&self) -> u64

返回索引节点号。 Read more
source§

fn mode(&self) -> u32

返回应用于此文件的权限。 Read more
返回指向该文件的硬链接数。 Read more
source§

fn uid(&self) -> u32

返回此文件所有者的用户标识。 Read more
source§

fn gid(&self) -> u32

返回此文件所有者的组 ID。 Read more
source§

fn rdev(&self) -> u64

返回此文件的设备 ID (如果是特殊文件)。 Read more
source§

fn size(&self) -> u64

返回此文件的总大小 (以字节为单位)。 Read more
source§

fn atime(&self) -> i64

返回文件的最后访问时间,以自 Unix 纪元以来的秒数为单位。 Read more
source§

fn atime_nsec(&self) -> i64

返回文件的最后访问时间,自 atime 起以纳秒为单位。 Read more
source§

fn mtime(&self) -> i64

返回文件的最后修改时间,以自 Unix 纪元以来的秒数为单位。 Read more
source§

fn mtime_nsec(&self) -> i64

返回文件的最后修改时间,自 mtime 起以纳秒为单位。 Read more
source§

fn ctime(&self) -> i64

返回文件的最后状态更改时间,以自 Unix 纪元以来的秒数为单位。 Read more
source§

fn ctime_nsec(&self) -> i64

返回文件的最后状态更改时间,自 ctime 起以纳秒为单位。 Read more
source§

fn blksize(&self) -> u64

返回文件系统 I/O 的块大小。 Read more
source§

fn blocks(&self) -> u64

返回以 512 字节为单位分配给文件的块数。 Read more
1.1.0 · source§

impl MetadataExt for Metadata

Available on Linux only.
source§

fn as_raw_stat(&self) -> &stat

👎Deprecated since 1.8.0: other methods of this trait are now preferred
获得对底层 stat 结构的引用,该结构包含操作系统返回的原始信息。 Read more
source§

fn st_dev(&self) -> u64

返回此文件所在的设备 ID。 Read more
source§

fn st_ino(&self) -> u64

返回索引节点号。 Read more
source§

fn st_mode(&self) -> u32

返回文件类型和模式。 Read more
返回文件的硬链接数。 Read more
source§

fn st_uid(&self) -> u32

返回文件所有者的用户标识。 Read more
source§

fn st_gid(&self) -> u32

返回文件所有者的组 ID。 Read more
source§

fn st_rdev(&self) -> u64

返回此文件表示的设备 ID。仅与特殊文件有关。 Read more
source§

fn st_size(&self) -> u64

返回文件的大小 (如果是常规文件或符号链接),以字节为单位。 Read more
source§

fn st_atime(&self) -> i64

返回文件的最后访问时间,以自 Unix 纪元以来的秒数为单位。 Read more
source§

fn st_atime_nsec(&self) -> i64

返回文件的最后访问时间,自 st_atime 起以纳秒为单位。 Read more
source§

fn st_mtime(&self) -> i64

返回文件的最后修改时间,以自 Unix 纪元以来的秒数为单位。 Read more
source§

fn st_mtime_nsec(&self) -> i64

返回文件的最后修改时间,自 st_mtime 起以纳秒为单位。 Read more
source§

fn st_ctime(&self) -> i64

返回文件的最后状态更改时间,以自 Unix 纪元以来的秒数为单位。 Read more
source§

fn st_ctime_nsec(&self) -> i64

返回文件的最后状态更改时间,自 st_ctime 起以纳秒为单位。 Read more
source§

fn st_blksize(&self) -> u64

返回有效文件系统 I/O 的 “preferred” 块大小。 Read more
source§

fn st_blocks(&self) -> u64

返回分配给文件的块数,以 512 字节为单位。 Read more
source§

impl MetadataExt for Metadata

Available on WASI only.
source§

fn dev(&self) -> u64

🔬This is a nightly-only experimental API. (wasi_ext #71213)
返回内部 filestat_tst_dev 字段
source§

fn ino(&self) -> u64

🔬This is a nightly-only experimental API. (wasi_ext #71213)
返回内部 filestat_tst_ino 字段
🔬This is a nightly-only experimental API. (wasi_ext #71213)
返回内部 filestat_tst_nlink 字段
source§

fn size(&self) -> u64

🔬This is a nightly-only experimental API. (wasi_ext #71213)
返回内部 filestat_tst_size 字段
source§

fn atim(&self) -> u64

🔬This is a nightly-only experimental API. (wasi_ext #71213)
返回内部 filestat_tst_atim 字段
source§

fn mtim(&self) -> u64

🔬This is a nightly-only experimental API. (wasi_ext #71213)
返回内部 filestat_tst_mtim 字段
source§

fn ctim(&self) -> u64

🔬This is a nightly-only experimental API. (wasi_ext #71213)
返回内部 filestat_tst_ctim 字段

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

从拥有的值中一成不变地借用。 Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

获得所有权后的结果类型。
source§

fn to_owned(&self) -> T

从借用的数据创建拥有的数据,通常是通过克隆。 Read more
source§

fn clone_into(&self, target: &mut T)

使用借来的数据来替换拥有的数据,通常是通过克隆。 Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

发生转换错误时返回的类型。
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

发生转换错误时返回的类型。
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。