Copy file, thư mục trong java | Chuyển tệp đến vị trí khác

Trong lập trình, có nhiều lúc chúng ta cần phải thao tác với các file và thư mục – từ việc tạo, đọc, ghi dữ liệu cho đến việc copy chúng từ một vị trí này sang vị trí khác. Trong bài viết này, hãy cùng TTnguyen tìm hiểu về cách copy file trong Java.

Xem thêm:

Mô tả yêu cầu

Xây dựng chương trình java cho phép copy file với các yêu cầu sau:

Ứng dụng này bao gồm hai nút: “Choose File” cho phép người dùng chọn một tệp hoặc thư mục cần sao chép, và “Copy To” để sao chép tệp hoặc thư mục đã chọn đến một đường dẫn mới mà người dùng chọn.

Copy file java example

Cụ thể:

1. Khi người dùng nhấp vào “btnChoose”, hiển thị một hộp thoại cho phép họ chọn tệp hoặc thư mục.

2. Sau khi tệp hoặc thư mục được chọn, đường dẫn tuyệt đối của nó sẽ được hiển thị trong một hộp văn bản txtPath.

3. “btnCopy” cũng sẽ mở ra một hộp thoại cho phép người dùng chọn thư mục đến nơi tệp hoặc thư mục đã chọn sẽ được sao chép.

4. Sau khi việc sao chép hoàn tất, hiển thị một thông báo xác nhận “Copied!”.

5. Nếu có bất kỳ lỗi nào xảy ra trong quá trình sao chép, hiển thị một hộp thoại thông báo lỗi với thông điệp tương ứng.

Video hướng dẫn:

Code copy file trong java

private void btnChooseActionPerformed(java.awt.event.ActionEvent evt) {                                          
    JFileChooser filechooser = new JFileChooser();
    filechooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    
    int result = filechooser.showOpenDialog(this);
    
    if(result == JFileChooser.APPROVE_OPTION){
        String path = filechooser.getSelectedFile().getAbsolutePath();
        txtPath.setText(path);
    }
}                                         

private void btnCopyToActionPerformed(java.awt.event.ActionEvent evt) {                                          
    JFileChooser filechooser = new JFileChooser();
    filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    
    int result = filechooser.showOpenDialog(this);
    
    if(result == JFileChooser.APPROVE_OPTION){
        String source = txtPath.getText();
        String destination = filechooser.getSelectedFile().getAbsolutePath();
        CopyFile(source, destination);
        JOptionPane.showMessageDialog(this, "Copied!");
    }
}                                         

private void CopyFile(String source, String destination){
    try {
        
        Path sourcePath = Paths.get(source);
        Path destinationPath = Paths.get(destination);
        
        Files.copy(sourcePath, destinationPath.resolve(sourcePath.getFileName()), StandardCopyOption.COPY_ATTRIBUTES);
        
        File myFile = new File(source);
        
        if(myFile.isDirectory()){
            for(File f : myFile.listFiles()){
                CopyFile(f.getAbsolutePath(), destination + File.separator + sourcePath.getFileName());
            }
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, "Copy Failed!" + e.getMessage());
    }
}

Giải thích code chi tiết:

Phương thức btnChooseActionPerformed:

  • Phương thức này được thực thi khi người dùng nhấp vào một nút “Choose”.
  • Thiết lập chế độ cho phép cả tệp và thư mục (FILES_AND_DIRECTORIES).
  • Hiển thị hộp thoại chọn tệp bằng cách sử dụng showOpenDialog(this).
  • Đường dẫn tuyệt đối của tệp hoặc thư mục được chọn được hiển thị trên TextField.

Phương thức btnCopyToActionPerformed:

  • Gọi phương thức CopyFile với các đường dẫn nguồn và đích, và nếu thao tác sao chép thành công, hiển thị một hộp thoại thông báo rằng đã sao chép xong.

Phương thức CopyFile:

  • Phương thức này sử dụng đệ quy để sao chép tệp hoặc thư mục.
  • Nhận hai tham số: đường dẫn nguồn và đường dẫn đích.
  • Sử dụng Paths.get() để tạo đối tượng Path cho đường dẫn nguồn và đích.
  • Sao chép tệp hoặc thư mục từ nguồn đến đích bằng cách sử dụng Files.copy(). Nếu là một thư mục thì đệ quy để sao chép nội dung của nó.
  • Phương thức xử lý các ngoại lệ và hiển thị một hộp thoại thông báo nếu thao tác sao chép thất bại.

Trên đây là chương trình java giao diện đồ họa đơn giản cho phép người dùng chọn một tệp hoặc thư mục, hiển thị đường dẫn của nó, và sau đó sao chép nó vào một thư mục khác. Cảm ơn các bạn đã tham khảo bài tập lập trình hướng đối tượng java trên ttnguyen.net.

Source code:

Bài viết liên quan:

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em