Struct std::fs::Metadata
有关文件的元数据信息。
此结构体是从 metadata 或 symlink_metadata 函数或方法返回的,表示有关文件的已知元数据,例如其权限,大小,修改时间等。
1.Implementations
Impl Metadata
file_type
返回此元数据的文件类型
pub fn file_type(&self) -> FileType返回值:返回一个FileType
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
println!("{:#?}", metadata.file_type());
/*
FileType {
is_file: true,
is_dir: false,
is_symlink: false,
..
}
*/
}is_dir
判断是否为目录(文件夹),并且对于从 symlink_metadata 获得的符号链接元数据将为 false。
pub fn is_dir(&self) -> bool返回值:返回bool值,判断self是否为目录
use std::fs;
fn main() {
let metadata = fs::metadata("fold").unwrap();
println!("{:#?}", metadata.is_dir()); // true
}is_file
判断是否为文件,并且对于从 symlink_metadata 获得的符号链接元数据将为 false。
pub fn is_file(&self) -> bool返回值:返回bool值,判断self是否为文件
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
println!("{:#?}", metadata.is_file()); // true
}TIP
当目标只是读取 (或写入) 源时,可以读取 (或写入) 最可靠的测试源方法是打开它。 例如,仅使用 is_file 才能中断类似 Unix 的系统上的工作流,例如 diff <( prog_a )。 有关更多信息,请参见 File::open 或 OpenOptions::open。
is_symlink
判断是否为软链接
pub fn is_symlink(&self) -> bool返回值:返回bool值,判断self是否为软链接
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
println!("{:#?}", metadata.is_symlink()); // false
}len
获取文件大小,单位字节
pub fn len(&self) -> u64返回值:返回文件大小,单位字节
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
println!("{:#?}", metadata.len()); // 5
}permissions
获取文件拥有什么权限
pub fn permissions(&self) -> Permissions返回值:返回一个Permissions结构体对象,可根据这个对象获取和设置文件只读。
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
let mut p=metadata.permissions();
println!("{:#?}", p.readonly()); // false
p.set_readonly(true);
println!("{:#?}", p.readonly()); // true
}modified
获取文件最后的修改时间
pub fn modified(&self) -> Result<SystemTime>返回值:返回一个Result,若获取成功则为Ok(SystemTime),否则返回相应错误信息
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
println!("{:#?}", metadata.modified());
/*
Ok(
SystemTime {
intervals: 134221820054135173,
},
)
*/
}TIP
返回的值对应于 Unix 平台上的 stat 的 mtime 字段和 Windows 平台上的 ftLastWriteTime 字段。
此字段可能并非在所有平台上都可用,并且在它不可用的平台上将返回 Err。
accessed
获取文件最后的访问时间
pub fn accessed(&self) -> Result<SystemTime>返回值:返回一个Result,若获取成功则为Ok(SystemTime),否则返回相应错误信息
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
println!("{:#?}", metadata.accessed());
/*
Ok(
SystemTime {
intervals: 134221820054135173,
},
)
*/
}TIP
返回的值对应于 Unix 平台上的 stat 的 atime 字段和 Windows 平台上的 ftLastAccessTime 字段。
请注意,并非所有平台都会在文件的元数据中保留此字段的更新,例如,Windows 可以选择在访问文件时禁用此更新,而 Linux 同样具有 noatime。
此字段可能并非在所有平台上都可用,并且在它不可用的平台上将返回 Err。
created
获取文件的创建时间
pub fn created(&self) -> Result<SystemTime>返回值:返回一个Result,若获取成功则为Ok(SystemTime),否则返回相应错误信息
use std::fs;
fn main() {
let metadata = fs::metadata("test.txt").unwrap();
println!("{:#?}", metadata.created());
/*
Ok(
SystemTime {
intervals: 134221820054135173,
},
)
*/
}TIP
返回的值与从 4.11 开始的 Linux 内核上的 statx 的 btime 字段,在其他 Unix 平台上的 stat 的 birthtime 字段以及在 Windows 平台上的 ftCreationTime 字段相对应。
此字段可能并非在所有平台上都可用,并且会在它不可用的平台或文件系统上返回 Err。
2.Trait Implementations
impl Clone for Metadata
clone
返回值的副本。
fn clone(&self) -> Metadataclone_from
把另一个元信息克隆给自己
fn clone_from(&mut self, source: &Self)impl Debug for Metadata
fmt
使用给定的格式化程序格式化该值。
fn fmt(&self, f: &mut Formatter<'_>) -> Resultimpl MetadataExt for Metadata
Trait std::os::windows::fs::MetadataExt
TIP
仅在windows端可用
file_attributes
返回此元数据的 dwFileAttributes 字段的值。
fn file_attributes(&self) -> u32creation_time
返回此元数据的 ftCreationTime 字段的值。
fn creation_time(&self) -> u64last_access_time
返回此元数据的 ftLastAccessTime 字段的值。
fn last_access_time(&self) -> u64last_write_time
返回此元数据的 ftLastWriteTime 字段的值。
fn last_write_time(&self) -> u64file_size
返回此元数据的 nFileSize{High,Low} 字段的值。
fn file_size(&self) -> u64volume_serial_number
返回此元数据的 dwVolumeSerialNumber 字段的值。
fn volume_serial_number(&self) -> Option<u32>number_of_links
返回此元数据的 nNumberOfLinks 字段的值。
fn number_of_links(&self) -> Option<u32>file_index
返回此元数据的 nFileIndex{Low,High} 字段的值。
fn file_index(&self) -> Option<u64>impl MetadataExt for Metadata
Trait std::os::unix::fs::MetadataExt
TIP
仅在Unix端可用
dev
返回包含文件的设备的 ID。
fn dev(&self) -> u64ino
返回索引节点号。
fn ino(&self) -> u64mode
返回应用于此文件的权限。
fn mode(&self) -> u32nlink
返回指向该文件的硬链接数。
fn nlink(&self) -> u64uid
返回此文件所有者的用户标识。
fn uid(&self) -> u32gid
返回此文件所有者的组 ID。
fn gid(&self) -> u32rdev
返回此文件的设备 ID (如果是特殊文件)。
fn rdev(&self) -> u64size
返回此文件的总大小 (以字节为单位)。
fn size(&self) -> u64atime
返回文件的最后访问时间,以自 Unix 纪元以来的秒数为单位。
fn atime(&self) -> i64atime_nsec
返回文件的最后访问时间,自 atime 起以纳秒为单位。
fn atime_nsec(&self) -> i64mtime
返回文件的最后修改时间,以自 Unix 纪元以来的秒数为单位。
fn mtime(&self) -> i64mtime_nsec
返回文件的最后修改时间,自 mtime 起以纳秒为单位。
fn mtime_nsec(&self) -> i64ctime
返回文件的最后状态更改时间,以自 Unix 纪元以来的秒数为单位。
fn ctime(&self) -> i64ctime_nsec
返回文件的最后状态更改时间,自 ctime 起以纳秒为单位。
fn ctime_nsec(&self) -> i64blksize
返回文件系统 I/O 的块大小。
fn blksize(&self) -> u64blocks
返回以 512 字节为单位分配给文件的块数。
fn blocks(&self) -> u64impl MetadataExt for Metadata
TIP
仅在Linux端可用
as_raw_stat
获得对底层 stat 结构的引用,该结构包含操作系统返回的原始信息。
fn as_raw_stat(&self) -> &statst_dev
返回此文件所在的设备 ID。
fn st_dev(&self) -> u64st_ino
返回索引节点号。
fn st_ino(&self) -> u64st_mode
返回文件类型和模式。
fn st_mode(&self) -> u32st_nlink
返回文件的硬链接数。
fn st_nlink(&self) -> u64st_uid
返回文件所有者的用户标识。
fn st_uid(&self) -> u32st_gid
返回文件所有者的组 ID。
fn st_gid(&self) -> u32st_rdev
返回此文件表示的设备 ID。仅与特殊文件有关。
fn st_rdev(&self) -> u64st_size
返回文件的大小 (如果是常规文件或符号链接),以字节为单位。
fn st_size(&self) -> u64st_atime
返回文件的最后访问时间,以自 Unix 纪元以来的秒数为单位。
fn st_atime(&self) -> i64st_atime_nsec
返回文件的最后访问时间,自 st_atime 起以纳秒为单位。
fn st_atime_nsec(&self) -> i64st_mtime
返回文件的最后修改时间,以自 Unix 纪元以来的秒数为单位。
fn st_mtime(&self) -> i64st_mtime_nsec
返回文件的最后修改时间,自 st_mtime 起以纳秒为单位。
fn st_mtime_nsec(&self) -> i64st_ctime
返回文件的最后状态更改时间,以自 Unix 纪元以来的秒数为单位。
fn st_ctime(&self) -> i64st_ctime_nsec
返回文件的最后状态更改时间,自 st_ctime 起以纳秒为单位。
fn st_ctime_nsec(&self) -> i64st_blksize
返回有效文件系统 I/O 的 “preferred” 块大小。
fn st_blksize(&self) -> u64st_blocks
返回分配给文件的块数,以 512 字节为单位。
fn st_blocks(&self) -> u64impl MetadataExt for Metadata
TIP
仅在WASI端可用
dev
返回内部 filestat_t 的 st_dev 字段
fn dev(&self) -> u64ino
返回内部 filestat_t 的 st_ino 字段
fn ino(&self) -> u64nlink
返回内部 filestat_t 的 st_nlink 字段
fn nlink(&self) -> u64size
返回内部 filestat_t 的 st_size 字段
fn size(&self) -> u64atim
返回内部 filestat_t 的 st_atim 字段
fn atim(&self) -> u64mtim
返回内部 filestat_t 的 st_mtim 字段
fn mtim(&self) -> u64ctim
返回内部 filestat_t 的 st_ctim 字段
fn ctim(&self) -> u643.Auto Trait Implementations
impl RefUnwindSafe for Metadata
impl Send for Metadata
impl Sync for Metadata
impl Unpin for Metadata
impl UnwindSafe for Metadata
4.Blanket Implementations
impl<T> Any for T
impl<T> Any for T
where
T: 'static + ?Sized,impl<T> Borrow<T> for T
impl<T> Borrow<T> for T
where
T: ?Sized,impl<T> BorrowMut<T> for T
impl<T> BorrowMut<T> for T
where
T: ?Sized,impl<T> From<T> for T
impl<T> From<T> for Timpl<T, U> Into<U> for T
impl<T, U> Into<U> for T
where
U: From<T>,impl<T> ToOwned for T
impl<T> ToOwned for T
where
T: Clone,impl<T, U> TryFrom<U> for T
impl<T, U> TryFrom<U> for T
where
U: Into<T>,impl<T, U> TryInto<U> for T
impl<T, U> TryInto<U> for T
where
U: TryFrom<T>,