rust 获取文件夹下所有文件 用户输入数量 按数量分配到文件夹里

180it 2024-10-24 PM 111℃ 0条

rust 模拟生成 自定义数量的 文本文件 到指定文件夹

计划

  1. 导入必要的库。
  2. 定义一个函数来获取指定文件夹下的所有文件。
  3. 定义一个函数来将文件按用户输入的数量分配到新的文件夹中。
  4. 从用户输入获取每个文件夹的文件数量。
  5. 调用函数并传递所需的参数。

代码

use std::fs;
use std::io;
use std::path::Path;

fn get_files_in_folder(folder: &str) -> Vec<String> {
    let mut files = Vec::new();
    if let Ok(entries) = fs::read_dir(folder) {
        for entry in entries {
            if let Ok(entry) = entry {
                if entry.path().is_file() {
                    if let Some(file_name) = entry.path().to_str() {
                        files.push(file_name.to_string());
                    }
                }
            }
        }
    }
    files
}

fn distribute_files(files: Vec<String>, folder: &str, count: usize) -> std::io::Result<()> {
    let mut folder_index = 1;
    let mut file_index = 0;

    while file_index < files.len() {
        let new_folder = format!("{}/folder{}", folder, folder_index);
        if !Path::new(&new_folder).exists() {
            fs::create_dir(&new_folder)?;
        }

        for _ in 0..count {
            if file_index >= files.len() {
                break;
            }
            let file_name = &files[file_index];
            let file_path = Path::new(file_name);
            let new_file_path = format!("{}/{}", new_folder, file_path.file_name().unwrap().to_str().unwrap());
            fs::copy(file_name, new_file_path)?;
            file_index += 1;
        }

        folder_index += 1;
    }

    Ok(())
}

fn main() {
    let source_folder = "source";
    let destination_folder = "destination";

    println!("请输入每个文件夹的文件数量:");
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("读取输入失败");
    let count: usize = input.trim().parse().expect("请输入一个有效的数字");

    let files = get_files_in_folder(source_folder);

    match distribute_files(files, destination_folder, count) {
        Ok(_) => println!("文件已成功分配到文件夹 '{}'", destination_folder),
        Err(e) => eprintln!("分配文件时出错: {}", e),
    }
}

运行代码

  1. 确保你已经安装了 Rust。
  2. 在终端中运行以下命令来编译和运行代码:
cargo run

这段代码将从 source 文件夹中获取所有文件,并根据用户输入的数量将它们分配到 destination 文件夹中的多个子文件夹中。每个子文件夹将包含指定数量的文件。

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

rust 获取文件夹下所有文件 用户输入数量 按数量分配到文件夹里