pub fn copy<P: AsRef<Path>, Q: AsRef<Path>>(from: P, to: Q) -> Result<u64>
Expand description
将一个文件的内容复制到另一个文件。此函数还将复制原始文件的权限位到目标文件。
该函数将覆盖 to
的内容。
请注意,如果 from
和 to
都指向同一个文件,则此操作可能会截断该文件。
成功后,将返回复制的字节总数,该总数等于 metadata
报告的 to
文件的长度。
如果您想将一个文件的内容复制到另一个文件并且您正在使用 File
s,请参见 io::copy()
函数。
特定于平台的行为
此函数当前与 Unix 中的 open
函数相对应,其中 from
的 O_RDONLY
和 to
的 O_WRONLY
,O_CREAT
和 O_TRUNC
。
O_CLOEXEC
是为返回的文件描述符设置的。
在 Linux (包括 Android) 上,该函数尝试使用 copy_file_range(2)
,如果不可能,则回退到读取和写入。
在 Windows 上,此函数当前对应于 CopyFileEx
。
复制备用 NTFS 流,但此函数仅返回主流的大小。
在 MacOS 上,此函数对应于 fclonefileat
和 fcopyfile
。
请注意,特定于平台的行为 将来可能会改变。
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