Function std::fs::copy

1.0.0 · source ·
pub fn copy<P: AsRef<Path>, Q: AsRef<Path>>(from: P, to: Q) -> Result<u64>
Expand description

将一个文件的内容复制到另一个文件。此函数还将复制原始文件的权限位到目标文件。

该函数将覆盖 to 的内容。

请注意,如果 fromto 都指向同一个文件,则此操作可能会截断该文件。

成功后,将返回复制的字节总数,该总数等于 metadata 报告的 to 文件的长度。

如果您想将一个文件的内容复制到另一个文件并且您正在使用 File s,请参见 io::copy() 函数。

特定于平台的行为

此函数当前与 Unix 中的 open 函数相对应,其中 fromO_RDONLYtoO_WRONLYO_CREATO_TRUNC

O_CLOEXEC 是为返回的文件描述符设置的。

在 Linux (包括 Android) 上,该函数尝试使用 copy_file_range(2),如果不可能,则回退到读取和写入。

在 Windows 上,此函数当前对应于 CopyFileEx。 复制备用 NTFS 流,但此函数仅返回主流的大小。

在 MacOS 上,此函数对应于 fclonefileatfcopyfile

请注意,特定于平台的行为 将来可能会改变

Errors

在以下情况下,此函数将返回错误,但不仅限于这些情况:

  • from 既不是普通文件,也不是普通文件的符号链接。
  • from 不存在。
  • 当前进程没有读取 from 或写入 to 的权限。

Examples

use std::fs;

fn main() -> std::io::Result<()> {
    fs::copy("foo.txt", "bar.txt")?;  // 将 foo.txt 复制到 bar.txt
    Ok(())
}
Run