繁体   English   中英

在 Rust 中将文件从一个地方移动到另一个地方

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM