w3resource

Rust File Operations: Copy, Move, Delete with Error handling

Rust Error Propagation: Exercise-2 with Solution

Write a Rust program that performs multiple file operations (e.g., copy, move, delete) and handles errors at each step.

Sample Solution:

Rust Code:

use std::fs; // Import the fs module for file handling
use std::io; // Import the io module for file I/O operations

// Function to copy a file from source to destination
fn copy_file(source: &str, destination: &str) -> Result<(), io::Error> {
    fs::copy(source, destination)?; // Copy the file from source to destination
    Ok(()) // Return Ok if the operation completes successfully
}

// Function to move (rename) a file from source to destination
fn move_file(source: &str, destination: &str) -> Result<(), io::Error> {
    fs::rename(source, destination)?; // Move the file from source to destination
    Ok(()) // Return Ok if the operation completes successfully
}

// Function to delete a file
fn delete_file(file_path: &str) -> Result<(), io::Error> {
    fs::remove_file(file_path)?; // Delete the file at the specified path
    Ok(()) // Return Ok if the operation completes successfully
}

fn main() -> Result<(), io::Error> {
    let source_file = "source_file.txt"; // Specify the path of the source file
    let destination_file = "destination_file.txt"; // Specify the path of the destination file

    fs::write(source_file, "Sample text")?; // Create the source file with sample content

    println!("Copying file from {} to {}...", source_file, destination_file);
    copy_file(source_file, destination_file)?; // Copy the source file to the destination

    println!("Moving file from {} to {}...", source_file, destination_file);
    move_file(source_file, destination_file)?; // Move the source file to the destination

    println!("Deleting file {}...", destination_file);
    delete_file(destination_file)?; // Delete the destination file

    println!("File operations completed successfully.");

    Ok(()) // Return Ok if the program completes successfully
}

Output:

Copying file from source_file.txt to destination_file.txt...
Moving file from source_file.txt to destination_file.txt...
Deleting file destination_file.txt...
File operations completed successfully.

Explanation:

Here is a brief explanation of the above Rust code:

  • Importing Modules:
    • use std::fs: Imports the "fs" module from the standard library for file handling.
    • use std::io: Imports the "io" module from the standard library for handling I/O operations.
  • Function Definitions:
    • copy_file: Function to copy a file from a source path to a destination path. It uses fs::copy to copy.
    • move_file: Function to move (rename) a file from a source path to a destination path. It uses fs::rename to move.
    • delete_file: Function to delete a file at the specified path. It uses fs::remove_file to delete the file.
  • Main Function (main()):
    • It starts by defining the paths of the source file (source_file) and the destination file ('destination_file').
    • The source file is created with sample content using fs::write.
    • It then calls the "copy_file()" function to copy the source file to the destination file, printing a message indicating the operation.
    • Next, it calls the "move_file()" function to move (rename) the source file to the destination file, printing a message indicating the operation.
    • Finally, it calls the "delete_file()" function to delete the destination file, printing a message indicating the operation.
    • If any of the file operations encounter an error, it propagates the error up to the main function, which returns an error result.
    • If all operations complete successfully, it prints a message indicating that the file operations were completed successfully and returns an Ok result.

Rust Code Editor:

Previous: Rust File Processing Function: Read, Process, and Write with Error Handling.
Next: Rust Program: Interacting with Web Service for Authentication & Data retrieval.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.