Giao Diện Path
(Interface Path)

Interface Path, được giới thiệu trong Java SE 7, là một trong những điểm truy cập chính của gói java.nio.file. Interface này cung cấp một cách lập trình để đại diện cho một đường dẫn trong hệ thống tệp, cho phép bạn kiểm tra, xác định vị trí và thao tác với các tệp và thư mục.

Như tên của nó, Interface Path đại diện cho một đường dẫn trong hệ thống tệp. Một đối tượng Path chứa tên tệp và danh sách thư mục được sử dụng để tạo đường dẫn, và có thể được sử dụng để kiểm tra, xác định vị trí, và thao tác với các tệp.

Một đối tượng Path phản ánh nền tảng hệ thống tệp cụ thể. Ví dụ, trong hệ điều hành Solaris, một Path sử dụng cú pháp Solaris (/home/joe/foo), trong khi trên Microsoft Windows, cú pháp sẽ là Windows (C:\home\joe\foo). Path không độc lập với hệ thống; bạn không thể so sánh một Path từ hệ thống tệp Solaris với một Path từ hệ thống tệp Windows, ngay cả khi cấu trúc thư mục giống nhau và cả hai đều xác định cùng một tệp tương đối.

Tệp hoặc thư mục tương ứng với Path có thể không tồn tại. Bạn có thể tạo một đối tượng Path và thao tác với nó theo nhiều cách khác nhau: thêm vào nó, trích xuất các phần của nó, so sánh nó với một đường dẫn khác. Khi cần, bạn có thể sử dụng các phương thức trong lớp Files để kiểm tra sự tồn tại của tệp tương ứng với Path, tạo tệp, mở nó, xóa nó, thay đổi quyền truy cập của nó, và nhiều hơn nữa.

Tính tương thích

Các Path được tạo ra bởi nhà cung cấp hệ thống tệp mặc định thường tương thích với lớp java.io.File cũ hơn. Ví dụ, bạn có thể chuyển một đối tượng File thành một đối tượng Path bằng phương thức toPath, cho phép bạn sử dụng các tính năng NIO hiện đại trong khi vẫn tương tác với mã cũ. Ngược lại, bạn cũng có thể tạo một File từ một Path bằng phương thức toFile. Tuy nhiên, các Path được tạo ra bởi các nhà cung cấp hệ thống tệp không mặc định có thể không tương thích với java.io.File.

Tính đa luồng

Các triển khai của giao diện Path được thiết kế để không thay đổi và an toàn khi sử dụng bởi nhiều luồng đồng thời. Điều này có nghĩa là một đối tượng Path có thể được chia sẻ và sử dụng an toàn bởi nhiều luồng mà không cần phải đồng bộ hóa bên ngoài.

Khai báo Interface Path trong Java

Để sử dụng lớp Interface Path, bạn cần import gói java.nio.file bạn cần thêm câu lệnh import vào đầu file Java của mình.

Cú pháp câu lệnh import:

Cú pháp

import java.nio.file.Path;

Cú pháp khai báo interface Path:

Cú pháp

public interface Path
extends Comparable<Path>, Iterable<Path>, Watchable

Dưới đây là giải thích chi tiết về cú pháp khai báo này:

↳ public: Đây là phạm vi truy cập, cho phép Path có thể được truy cập từ bất kỳ đâu trong chương trình.

↳ interface: Path là một giao diện (interface), nghĩa là nó chỉ chứa các phương thức trừu tượng mà các lớp triển khai phải định nghĩa.

↳ Path: Đây là tên giao diện Path trong Java. Path đại diện cho một đường dẫn trong hệ thống tệp và cung cấp các phương thức để thao tác với đường dẫn này.

↳ extends Comparable<Path>: Path kế thừa từ giao diện Comparable<Path>. Điều này có nghĩa là các đối tượng Path có thể được so sánh với nhau. Phương thức compareTo(Path other) sẽ được định nghĩa để so sánh hai đối tượng Path nhằm xác định xem chúng bằng nhau, hay cái nào lớn hơn hoặc nhỏ hơn cái kia. Việc này rất hữu ích khi bạn muốn sắp xếp các đối tượng Path.

↳ extends Iterable<Path>: Path cũng kế thừa từ giao diện Iterable<Path>. Điều này có nghĩa là bạn có thể lặp qua các thành phần trong một đối tượng Path bằng cách sử dụng vòng lặp for-each. Mỗi thành phần trong một đối tượng Path là một đoạn (segment) của đường dẫn, chẳng hạn như tên các thư mục hoặc tệp trong đường dẫn đó.

↳ extends Watchable: Path kế thừa từ giao diện Watchable. Điều này cho phép bạn đăng ký một đối tượng Path với một WatchService để theo dõi các sự kiện tệp hệ thống như thay đổi, tạo, hoặc xóa tệp hoặc thư mục tương ứng với đường dẫn đó. Tính năng này rất hữu ích khi bạn cần theo dõi những thay đổi trong hệ thống tệp.

Các phương thức của interface Path

interface Path cung cấp một loạt các phương thức để thao tác và truy xuất thông tin về đường dẫn. Dưới đây là danh sách tất cả các phương thức của interface Path trong Java:

Phương thức xử lý và lấy thông tin đường dẫn

Phương thứcMô tả
Path getFileName()Trả về tên của tệp hoặc thư mục cuối cùng trong đường dẫn dưới dạng một đối tượng Path.
FileSystem getFileSystem()Trả về hệ thống tệp đã tạo ra đối tượng này.
Path getName(int index)Trả về phần tử tên thứ index của đường dẫn dưới dạng một đối tượng Path.
int getNameCount()Trả về số lượng phần tử tên trong đường dẫn.
Path subpath(int beginIndex, int endIndex)Trả về một một đường dẫn tương đối là một chuỗi con của các phần tử tên trong đường dẫn hiện tại.
Path getParent()Trả về đường dẫn của thư mục cha hoặc null nếu không có thư mục cha.
Path getRoot()Trả về thành phần gốc của đường dẫn dưới dạng một đối tượng Path hoặc null nếu không có thành phần gốc.
boolean isAbsolute()Kiểm tra xem đường dẫn là tuyệt đối hay tương đối.

Phương thức tạo mới và thao tác đường dẫn

Phương thứcMô tả
Iterator<Path> iterator()Trả về một iterator để duyệt qua các phần tử tên của đường dẫn.
Path normalize()Loại bỏ các phần tử tên dư thừa trong đường dẫn.
Path resolve(Path other)Kết hợp hai đường dẫn thành một đường dẫn mới.
Path resolve(String other)Chuyển đổi một chuỗi thành đường dẫn và kết hợp với đường dẫn hiện tại.
Path resolveSibling(Path other)Kết hợp đường dẫn với đường dẫn cùng cấp.
Path resolveSibling(String other)Chuyển đổi một chuỗi thành đường dẫn và kết hợp với đường dẫn cha của đường dẫn hiện tại.
Path relativize(Path other)Tạo một đường dẫn tương đối từ đường dẫn hiện tại đến đường dẫn khác.
Path toAbsolutePath()Trả về một đường dẫn tuyệt đối tương ứng với đường dẫn hiện tại.

Phương thức chuyển đổi đường dẫn

Phương thứcMô tả
File toFile()Trả về một đối tượng File đại diện cho đường dẫn này. Lưu ý rằng nếu đường dẫn không liên quan đến nhà cung cấp mặc định, phương thức này có thể ném ngoại lệ UnsupportedOperationException.
Path toRealPath(LinkOption... options)Trả về đường dẫn thực của một tệp hiện có, giải quyết các liên kết tượng trưng nếu cần thiết.
String toString()Trả về chuỗi biểu diễn của đường dẫn này.
URI toUri()Trả về một URI đại diện cho đường dẫn này.

Phương thức so sánh và kiểm tra đường dẫn

Phương thứcMô tả
int compareTo(Path other)So sánh hai đường dẫn theo thứ tự từ điển.
boolean equals(Object other)Kiểm tra xem hai đường dẫn có bằng nhau không.
int hashCode()Tính toán mã băm cho đường dẫn.
boolean endsWith(Path other)Kiểm tra xem đường dẫn có kết thúc bằng một đường dẫn khác không.
boolean endsWith(String other)Kiểm tra xem đường dẫn có kết thúc bằng một chuỗi ký tự không.

Phương thức đăng ký theo dõi thay đổi

Phương thứcMô tả
WatchKey WatchKeyregister(WatchService watcher, WatchEvent.Kind<?>... events)Đăng ký theo dõi sự thay đổi của tệp hoặc thư mục tại đường dẫn này.
WatchKey register(WatchService watcher, WatchEvent.Kind<?>[] events, WatchEvent.Modifier... modifiers)Đăng ký theo dõi sự thay đổi của tệp hoặc thư mục tại đường dẫn này với các tùy chọn bổ sung.

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.”