Chuyển Đổi Một Đường Dẩn
(Converting a Path)

Trong Java, bạn có thể sử dụng ba phương thức chính để chuyển đổi một đối tượng Path thành các định dạng khác nhau, tùy thuộc vào mục đích sử dụng:

Chuyển đổi thành URI

Phương thức toUri() chuyển đổi đường dẫn thành một URI, mà bạn có thể sử dụng để mở tệp từ trình duyệt. Ví dụ:

Ví dụ: Example.java

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

public class Example {
    public static void main(String[] args) {
        // Tạo đối tượng Path
        Path path = Paths.get("/home/user/documents/example.txt");
        
        // Chuyển đổi đường dẫn thành URI
        java.net.URI uri = path.toUri();
        
        // In URI ra màn hình
        System.out.format("URI: %s%n", uri);
    }
}

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

URI: file:///D:/home/user/documents/example.txt

file:///home/user/documents/example.txt: URI đại diện cho vị trí của tệp tin trên hệ thống tệp. URI này có thể được sử dụng để mở tệp từ trình duyệt hoặc các ứng dụng hỗ trợ URI.

Việc sử dụng URI giúp bạn truy cập tài nguyên từ nhiều nguồn khác nhau và mở rộng khả năng tích hợp trong các ứng dụng khác.

Chuyển đổi thành đường dẫn tuyệt đối

Phương thức toAbsolutePath() chuyển đổi một đường dẫn thành đường dẫn tuyệt đối. Nếu đường dẫn đã là tuyệt đối, nó sẽ trả về chính đối tượng Path đó. Phương thức này hữu ích khi xử lý tên tệp do người dùng nhập vào:

Ví dụ: Example.java

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

public class Example {
    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("Example.java");
            System.exit(-1);
        }

        // Chuyển đổi chuỗi nhập từ người dùng thành đối tượng Path
        Path inputPath = Paths.get(args[0]);

        // Chuyển đổi Path thành đường dẫn tuyệt đối
        Path absolutePath = inputPath.toAbsolutePath();

        // In đường dẫn tuyệt đối ra màn hình
        System.out.format("Đường dẫn tuyệt đối: %s%n", absolutePath);
    }
}

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

Example.java

Kết quả sẽ phụ thuộc vào đường dẫn bạn cung cấp:

↳ Nếu đường dẫn nhập vào đã là đường dẫn tuyệt đối (ví dụ: /home/user/docs/file.txt), phương thức toAbsolutePath() sẽ trả về chính đường dẫn đó.

↳ Nếu đường dẫn nhập vào là tương đối (ví dụ: file.txt), phương thức toAbsolutePath() sẽ chuyển đổi nó thành đường dẫn đầy đủ, bằng cách thêm đường dẫn của thư mục làm việc hiện tại.

↳ Phương thức toAbsolutePath() chuyển đổi đầu vào của người dùng và trả về một Path với các giá trị hữu ích khi truy vấn. Tệp không cần phải tồn tại để phương thức này hoạt động.

Chuyển đổi thành đường dẫn thực

Phương thức toRealPath() trả về đường dẫn thực của một tệp tồn tại. Phương thức này thực hiện nhiều thao tác trong một lần gọi:

↳ Nếu đối số true được truyền vào và hệ thống tệp hỗ trợ liên kết tượng trưng (symbolic links), phương thức này sẽ giải quyết bất kỳ liên kết tượng trưng nào trong đường dẫn.

↳ Nếu Path là tương đối, nó sẽ trả về một đường dẫn tuyệt đối.

↳ Nếu Path chứa các phần tử thừa, nó sẽ trả về một đường dẫn với các phần tử đó đã bị loại bỏ.

Phương thức này sẽ ném ra một ngoại lệ nếu tệp không tồn tại hoặc không thể truy cập được. Bạn có thể bắt ngoại lệ khi muốn xử lý các trường hợp này. Ví dụ:

Ví dụ: Example.java

import java.io.IOException;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Example {
    public static void main(String[] args) {
        if (args.length < 1) {
            System.out.println("Example.java");
            System.exit(-1);
        }

        // Chuyển đổi chuỗi nhập từ người dùng thành đối tượng Path
        Path inputPath = Paths.get(args[0]);

        try {
            // Chuyển đổi Path thành đường dẫn thực
            Path realPath = inputPath.toRealPath();
            
            // In đường dẫn thực ra màn hình
            System.out.format("Đường dẫn thực: %s%n", realPath);
        } catch (NoSuchFileException x) {
            System.err.format("%s: không tồn tại tệp hoặc thư mục%n", inputPath);
        } catch (IOException x) {
            System.err.format("%s%n", x);
        }
    }
}

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

Example.java

Kết quả sẽ phụ thuộc vào đường dẫn bạn cung cấp. Ví dụ, nếu đường dẫn chứa liên kết tượng trưng hoặc phần tử dư thừa, phương thức toRealPath() sẽ trả về đường dẫn đã được chuẩn hóa và giải quyết, chẳng hạn như:

Đường dẫn thực: /actual/path/to/file.txt

Nếu tệp không tồn tại hoặc có lỗi, thông báo lỗi sẽ được hiển thị:

/current/working/directory/foo: không tồn tại tệp hoặc thư mục
Hoặc
java.io.IOException: I/O error

Hy vọng rằng qua các ví dụ trên, bạn sẽ hiểu rõ hơn về cách chuyển đổi đườ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.”