Cách đổi tên và di chuyển file sang thư mục khác trong Java

Trong bài hướng dẫn nhanh này chúng ta sẽ cùng nhau tìm hiểu cách đổi tên và di chuyển file sang một thư mục khác trong Java.

Java NIO

Chúng ta có thể sử dụng Files.move(source, target) để di chuyển và thay đổi tên file cùng một lúc.

import java.io.IOException;
import java.nio.file.*;

public class FileRenameMove {

    public static void main(String[] args) {

        String currentFilePath = "/home/deft/currentfolder/test1.txt";
        String newFilePath = "/home/deft/newfolder/test2.txt";
        Path source = Paths.get(currentFilePath);
        Path target = Paths.get(newFilePath);

        try {
            Files.move(source, target);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

File class

Ngoài ra, File class cũng cung cấp method renameTo() dùng để di chuyển và đổi tên file.

import java.io.File;
import java.io.IOException;
import java.nio.file.*;

public class Main {

    public static void main(String[] args) {

        String currentFilePath = "/home/deft/currentfolder/test1.txt";
        String newFilePath = "/home/deft/newfolder/test2.txt";
        try {
            File fileToMove = new File(currentFilePath);
            boolean isMoved = fileToMove.renameTo(new File(newFilePath));
            if (!isMoved) {
                throw new FileSystemException(newFilePath);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Trong đoạn mã trên, hàm renameTo() chỉ trả về 2 exception:

  • SecurityException – nếu ứng dụng không có quyền ghi vào thư mục nguồn hoặc đích.
  • NullPointerException – nếu tham số đầu vào null.

Do vậy, nếu thư mục đích cần chuyển đến không tồn tại thì không có exception nào được throw ra. Chúng ta phải thực hiện kiểm tra bằng cách nhận lại giá trị trả về của renameTo().

Sử dụng Guava

Tiếp theo, chúng ta cũng có thể sử dụng thư viện Guava để di chuyển và thay đổi tên file một cách nhanh chóng.

import java.io.File;
import java.io.IOException;
import java.nio.file.*;

public class Main {

    public static void main(String[] args) {

        String currentFilePath = "/home/deft/currentfolder/test1.txt";
        String newFilePath = "/home/deft/newfolder/test2.txt";
        try {
            File fileToMove = new File(currentFilePath);
            File targetFile = new File(newFilePath);
            com.google.common.io.Files.move(fileToMove, targetFile);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Apache Commons IO

Cuối cùng, Apache commons IO cũng có một method sử dụng rất đơn giản để thực hiện các thao tác tương tự với những cách trên.

String currentFilePath = "/home/deft/currentfolder/test1.txt";
String newFilePath = "/home/deft/newfolder/test2.txt"; 
FileUtils.moveFile(FileUtils.getFile(currentFilePath), FileUtils.getFile(newFilePath));

Ngoài ra, chúng ta còn có một cách khác để di chuyển và đổi tên file và cho phép tự động tạo thư mục đích nếu nó chưa tồn tại.

String currentFilePath = "/home/deft/currentfolder/test1.txt";
String newFilePath = "/home/deft/newfolder/test2.txt"; 
FileUtils.moveFileToDirectory(
      FileUtils.getFile(currentFilePath), 
      FileUtils.getFile(newFilePath), true);

Nguồn

https://www.baeldung.com/java-how-to-rename-or-move-a-file

https://mkyong.com/java/how-to-rename-file-in-java/

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x