rust 模拟生成 自定义数量的 文本文件 到指定文件夹
计划
- 导入必要的库。
- 定义一个函数来获取指定文件夹下的所有文件。
- 定义一个函数来将文件按用户输入的数量分配到新的文件夹中。
- 从用户输入获取每个文件夹的文件数量。
- 调用函数并传递所需的参数。
代码
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),
}
}
运行代码
- 确保你已经安装了 Rust。
- 在终端中运行以下命令来编译和运行代码:
cargo run
这段代码将从 source
文件夹中获取所有文件,并根据用户输入的数量将它们分配到 destination
文件夹中的多个子文件夹中。每个子文件夹将包含指定数量的文件。
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询