[英]Moving files from place to place in Rust
假设我有这样的文件结构
a
|
+-- x
|
+-- y
b
我希望将 x 从 a 移动到 b,在 Rust 中实现此目标的最佳方法是什么? 我正在研究 Windows,但最希望添加跨平台支持。
我目前对 Rust 不是特别有经验,并且无法在 web 上找到答案。
编辑目前跨平台支持并不重要:)
要移动 Rust 中的文件或目录,您可以使用 std::fs::rename function。这个 function 将适用于 Windows 和类 Unix 操作系统。
以下是如何使用重命名将 x 从 a 移动到 b 的示例:
use std::fs;
use std::path::Path;
fn main() -> std::io::Result<()> {
// The path to the file we want to move
let file_path = Path::new("a/x");
// The destination path for the file
let destination_path = Path::new("b/x");
// Use rename to move the file
fs::rename(file_path, destination_path)?;
Ok(())
}
此代码会将位于 a/x 的文件重命名为 b/x。 如果目标路径不存在,文件将被移动到 b 目录的根目录。 如果要将文件移动到b的子目录,可以在目标路径中指定子目录。 例如,要将文件移动到 b/subdir/x,您可以使用 Path::new("b/subdir/x") 作为目标路径。
如果要为代码添加跨平台支持,可以使用 std::path::PathBuf 类型而不是 std::path::Path。 PathBuf 是一种可以以与平台无关的方式保存路径的类型,它有许多用于操作和使用路径的方法。 你可以像这样使用它:
use std::fs;
use std::path::PathBuf;
fn main() -> std::io::Result<()> {
// The path to the file we want to move
let mut file_path = PathBuf::from("a/x");
// The destination path for the file
let mut destination_path = PathBuf::from("b/x");
// Use rename to move the file
fs::rename(file_path, destination_path)?;
Ok(())
}
此代码适用于 Rust 支持的任何操作系统。
使用std::fs::rename()
移动文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.