Loại Bỏ Các Phần Dư Thừa Khỏi Một Đường Dẩn
(Removing Redundancies From a Path )

Một số hệ thống tệp sử dụng ký hiệu "." để biểu thị thư mục hiện tại và ".." để biểu thị thư mục cha. Bạn có thể gặp tình huống một Path chứa thông tin thư mục dư thừa. Ví dụ, một máy chủ được cấu hình để lưu trữ các tệp log trong thư mục "/dir/logs/.", và bạn muốn xóa ký hiệu "/." khỏi đường dẫn.

Các ví dụ sau đây đều bao gồm các phần dư thừa:

↳ /home/./joe/foo

↳ /home/sally/../joe/foo

Phương thức normalize() loại bỏ bất kỳ phần tử dư thừa nào, bao gồm cả các trường hợp "." hoặc "thư mục/..". Cả hai ví dụ trên đều được chuẩn hóa thành /home/joe/foo.

Quan trọng cần lưu ý là phương thức normalize() không kiểm tra hệ thống tệp khi dọn dẹp đường dẫn. Đó là một hoạt động cú pháp thuần túy. Trong ví dụ thứ hai, nếu sally là một liên kết tượng trưng, việc xóa sally/.. có thể dẫn đến một Path không còn định vị được tệp dự định.

Để dọn dẹp một đường dẫn đồng thời đảm bảo kết quả định vị đúng tệp, bạn có thể sử dụng phương thức toRealPath(). Phương thức này sẽ được mô tả trong phần tiếp theo, Chuyển đổi một Path.

Dưới đây là một ví dụ Java sử dụng phương thức normalize() để loại bỏ các phần tử dư thừa trong đường dẫn:

Ví dụ: Example.java

import java.nio.file.Path;
import java.nio.file.Paths;

public class Example {
    public static void main(String[] args) {
        // Đường dẫn với các phần tử dư thừa
        Path path1 = Paths.get("/home/./joe/foo");
        Path path2 = Paths.get("/home/sally/../joe/foo");

        // Chuẩn hóa đường dẫn
        Path normalizedPath1 = path1.normalize();
        Path normalizedPath2 = path2.normalize();

        // In thông tin về đường dẫn đã chuẩn hóa
        System.out.println("Đường dẫn đã chuẩn hóa 1: " + normalizedPath1);
        System.out.println("Đường dẫn đã chuẩn hóa 2: " + normalizedPath2);
    }
}

Kết quả của chương trình là:

Đường dẫn đã chuẩn hóa 1: \home\joe\foo
Đường dẫn đã chuẩn hóa 2: \home\joe\foo

Trong ví dụ này, phương thức normalize() đã loại bỏ các phần tử dư thừa như "." và "sally/..", trả về đường dẫn chính xác mà không chứa thông tin dư thừa.

Hy vọng rằng qua các ví dụ trên, bạn sẽ hiểu rõ hơn về cách loại bỏ phần dư thừa của đường dẫn trong Java.

Câu Nói Truyền Cảm Hứng

“Bắt đầu ở đâu không quan trọng, quan trọng là bạn sẵn sàng bắt đầu.” – W. Clement Stone

Không Gian Tích Cực

“Chúc bạn luôn giữ vững niềm tin và sức mạnh để vượt qua mọi thử thách trong cuộc sống.”