Java: Kiểm tra tập tin hoặc thư mục


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Bạn có một đối tượng của lớp Path và nó thể hiện một tập tin hoặc một thư mục, nhưng tập tin đó có tồn tại trên hệ thống tập tin? Có thể đọc được không? Có thể ghi được không? Có thể thực thi được không?

Xác minh sự hiện hữu của một tập tin hoặc thư mục

Các phương thức trong lớp Path là cú pháp, có nghĩa là chúng hoạt động trên thể hiện của lớp Path. Nhưng cuối cùng, bạn phải truy cập vào hệ thống tập tin để xác minh rằng Path có tồn tại hay không. Bạn có thể làm như vậy với các phương thức exists(Path, LinkOption ...) và notExists(Path, LinkOption ...). Lưu ý rằng !Files.exists(path) không tương đương với Files.notExists(path). Khi ta đang thử nghiệm sự tồn tại của một tập tin, ba kết quả có thể là:

  • Tập tin được xác định là tồn tại.
  • Tập tin được xác định là không tồn tại.
  • Không rõ trạng thái của tập tin. Kết quả này có thể xảy ra khi các chương trình không có quyền truy cập vào các tập tin.

Nếu cả hai phương thức exists và notExists đều trả về false thì không thể xác định được sự tồn tại của tập tin.

Kiểm tra khả năng truy cập tập tin

Để xác định rằng các chương trình có thể truy cập vào một tập tin khi cần thiết hay không, ta có thể sử dụng các phương thức isReadable(Path)isWritable(Path), và isExecutable(Path).

Đoạn mã dưới đây sẽ kiểm chứng rằng một tập tin cụ thể có tồn tại hay không và rằng chương trình có khả năng thực thi tập tin hay không.

Path file = ...;
boolean isRegularExecutableFile = Files.isRegularFile(file) &
         Files.isReadable(file) & Files.isExecutable(file);

Lưu ý:  Khi bất kỳ của những phương pháp này hoàn tất, không có đảm bảo rằng các tập tin có thể được truy cập. Một lỗ hổng bảo mật thường gặp trong nhiều ứng dụng là để thực hiện một kiểm tra và sau đó truy cập vào các tập tin. Để biết thêm thông tin, sử dụng công cụ tìm kiếm ưa thích của bạn để tìm kiếm TOCTTOU (phát âm TOCK-quá ).

Kiểm tra xem hai đường dẫn có định vị tới cùng một tập tin hay không

Khi bạn có một hệ thống tập tin trong đó có sử dụng các liên kết tượng trưng, thì có thể có hai đường dẫn khác nhau sẽ định vị tới cùng một tập tin. Phương thức isSameFile(Path, Path) sẽ so sánh hai đường dẫn để xác định điều này. Ví dụ:

Path p1 = ...;
Path p2 = ...; 
if (Files.isSameFile(p1, p2)) {
    // Code here
}
» Tiếp: Xóa tập tin hoặc thư mục
« Trước: Các hoạt động với File
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!