Java: Lớp Files và các thuộc tính


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

Như đã thảo luận, trong một hệ thống tệp, các tệp và thư mục sẽ bao gồm các dữ liệu. Chúng là các metadata (siêu dữ liệu) theo dõi thông tin về từng đối tượng trong hệ thống tệp. Thông tin có thể là ngày tạo tệp, ngày sửa đổi tệp cuối cùng, chủ sở hữu tệp, v.v.

Lưu ý - Metadata có nghĩa là dữ liệu về dữ liệu khác.

Siêu dữ liệu đề cập đến các thuộc tính tệp của hệ thống tệp. Các thuộc tính tệp này có thể đạt được bằng nhiều phương thức khác nhau của lớp File. Bảng dưới đây mô tả các phương thức này.

Phương thức

Mô tả

isRegularFile(Path, LinkOption ...)

Phương thức này trả về true nếu Path được chỉ định định vị một tệp thông thường.

isSymbolicLink(Path)

Phương thức này trả về true nếu Path được chỉ định định vị tệp là liên kết tượng trưng.

size(Path)

Phương thức này trả về kích thước của tệp được chỉ định tính bằng byte.

isDirectory(Path, LinkOption)

Phương thức này trả về true nếu Path được chỉ định định vị tệp là thư mục.

isHidden(Path)

Phương thức này trả về true nếu Path được chỉ định định vị một tệp ẩn.

getPosixFilePermissions(Path, LinkOption ...)

Phương thức này trả về hoặc thiết lập các quyền tệp POSIX của tệp.

setPosixFilePermissions(Path,Set<PosixFilePermission>)

getAttribute(Path, String, LinkOption ...)

setAttribute(Path, String, Object, LinkOption ...)

getLastModifiedTime(Path, LinkOption ...)

setLastModifiedTime(Path, FileTime)

Phương thức này trả về hoặc thiết lập giá trị thuộc tính của tệp.

Phương thức này trả về hoặc thiết lập thời gian sửa đổi cuối cùng của tệp được chỉ định.

getOwner(Path, LinkOption ...)

setOwner(Path, UserPrincipal)

Phương thức này trả về hoặc thiết lập chủ sở hữu tệp.

Để có được một tập hợp các thuộc tính, lớp File bao gồm hai phương thức readAttributes() sau đây để lấy các thuộc tính của tệp trong một thao tác dạng loạt (bulk):

  • readAttributes (Path p, Class<A> type, LinkOption ... option): Tùy chọn này đọc các thuộc tính của tệp như một hoạt động dạng loạt.

trong đó,

p - chỉ định đường dẫn đến tệp

type - chỉ định loại thuộc tính tệp được yêu cầu để đọc

option - chỉ định cách mà liên kết tượng trưng sẽ được xử lý

Phương thức trả về một đối tượng của kiểu được hỗ trợ. Nói cách khác, nó trả về các thuộc tính tệp. Phương thức này ném IOException, UnsupportedOperationException và SecurityException.

  • readAttributes(Path p, String str, LinkOption ... option): Đọc một tập hợp các thuộc tính của tệp như một hoạt động dạng loạt. Ở đây, tham số str xác định các thuộc tính sẽ được đọc.

trong đó,

p - chỉ định đường dẫn đến tệp

str - chỉ định loại thuộc tính tệp được yêu cầu để đọc

tùy chọn - chỉ định cách mà liên kết tượng trưng sẽ được xử lý

Phương thức trả về một bản đồ các thuộc tính. Khóa của bản đồ lưu trữ tên thuộc tính và giá trị lưu trữ các giá trị thuộc tính. Phương thức này ném IOException, UnsupportedOperationException, IllegalArgumentException và SecurityException.

Lưu ý - Việc truy cập liên tục vào hệ thống tệp cho một thuộc tính ảnh hưởng xấu đến hiệu suất.  Ngoài ra, nếu một chương trình yêu cầu nhiều thuộc tính tệp đồng thời, các phương thức có thể không hiệu quả để truy xuất một thuộc tính.

Các thuộc tính tệp liên quan được nhóm lại với nhau thành các view vì các hệ thống tệp khác nhau theo dõi các thuộc tính khác nhau. Chế độ xem ánh xạ tới một chức năng chung, chẳng hạn như quyền sở hữu tệp hoặc triển khai hệ thống tệp cụ thể, chẳng hạn như DOS.

Bảng sau đây mô tả các view được hỗ trợ.

View

Mô tả

BasicFileAttributeView

Điều này cung cấp một view về các thuộc tính cơ bản được hỗ trợ bởi tất cả các thể hiện của hệ thống tệp.

PosixFileAttributeView

View này mở rộng view thuộc tính cơ bản với các thuộc tính, chẳng hạn như chủ sở hữu tệp và chủ sở hữu nhóm, được hỗ trợ trên hệ thống tệp POSIX như UNIX.

DosFileAttributeView

Dạng view này mở rộng dạng view thuộc tính cơ bản với 4 bit tiêu chuẩn được hỗ trợ trên các hệ thống tệp hỗ trợ các thuộc tính DOS.

FileOwnerAttributeView

View này được hỗ trợ bởi bất kỳ hệ thống tệp nào hỗ trợ khái niệm chủ sở hữu tệp.

UserDefinedFileAttributeView View này hỗ trợ siêu dữ liệu do người dùng xác định. View này ánh xạ tới các cơ chế mở rộng mà hệ thống tệp hỗ trợ.
AclFileAttributeView Dạng view này hỗ trợ đọc hoặc cập nhật Danh sách Kiểm soát Truy cập (ACL) của tệp. Lưu ý: Mô hình NFSv4 ACL được hỗ trợ.

Việc triển khai hệ thống tệp cụ thể có thể hỗ trợ bất kỳ điều nào sau đây:

  • Chỉ có view thuộc tính tệp cơ bản
  • Một số view thuộc tính tệp
  • Các view thuộc tính khác không có trong API

Lưu ý - Có thể truy cập FileAttributeView bằng phương thức getFileAttributeView(Path, Class<V>, LinkOption ...).

Các phương thức readAttributes sử dụng generic. Chúng có thể được sử dụng để đọc các thuộc tính cho bất kỳ view thuộc tính tệp nào.

Thay vì truy cập riêng vào hệ thống tệp để đọc từng thuộc tính riêng lẻ, bạn nên sử dụng một trong các phương thức Files.readAttributes để đọc các thuộc tính cơ bản của tệp. Các phương pháp này đọc tất cả các thuộc tính cơ bản trong một hoạt động dạng loạt và được chứng tỏ là rất hiệu quả.

ưu ý - Đối số varargs hỗ trợ enum LinkOption, NOFOLLOW_LINKS.  Sử dụng tùy chọn khi các liên kết tượng trưng không được theo sau.

Các thuộc tính cơ bản của hệ thống tệp bao gồm các dấu thời gian sau:

  • createTime
  • LastModifiedTime
  • LastAccessTime

Một thể hiện cụ thể khi hỗ trợ các dấu thời gian này, trả về một đối tượng FileTime. Nếu không, nó trả về một giá trị dành riêng cho việc triển khai.

Thuộc tính tệp DOS

Các hệ thống tệp khác ngoài DOS như Samba cũng hỗ trợ các thuộc tính tệp DOS.

Ví dụ sau cho thấy việc sử dụng các phương thức của lớp DosFileAttributes.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.DosFileAttributes;

public class DOSFileAttriApplication {

  /**
   * @param args
   * @throws IOException
   */
  public static void main(String[] args) throws IOException {
    Path pathObj;
    pathObj = Paths.get("C:/Java/Hello.txt");
    try {
      DosFileAttributes attrObj =
        Files.readAttributes(pathObj, DosFileAttributes.class);
      System.out.println("Is ReadOnly: " + attrObj.isReadOnly());
      System.out.println("Is Hidden: " + attrObj.isHidden());
      System.out.println("Is Archive: " + attrObj.isArchive());
      System.out.println("Is System: " + attrObj.isSystem());
    } catch (UnsupportedOperationException ex) {
      System.err.println("DOS file" + " attributes not supported:" + ex);
    }
  }
}

Hình sau thể hiện kết quả.

DOSFileAttributeApplication

Một thuộc tính DOS có thể được đặt trên một tệp bằng phương thức setAttribute(Path, String, Object, LinkOption ...). Ví dụ sau trình bày cài đặt của thuộc tính DOS.

Path file = ...;
Files.setAttribute(file, "dos:hidden", true);

Tóm tắt

♦ Java SE 6 đã giới thiệu lớp Console để nâng cao và đơn giản hóa các ứng dụng dòng lệnh.

♦ Lớp Console cung cấp nhiều phương thức khác nhau để truy cập thiết bị console dựa trên ký tự.

♦ Java trong gói java.util.zip của nó cung cấp các lớp có thể nén và giải nén tệp.

♦ Các lớp Deflater và Inflater mở rộng từ lớp Object.

♦ Các lớp DeflaterInputStream và DeflaterOutputStream được kế thừa từ các lớp FilterInputStream và FilterOutputStream tương ứng.

♦ Các lớp InflaterInputStream và InflaterOutputStream được kế thừa từ các lớp FilterInputStream và FilterOutputStream tương ứng.

♦ NIO phụ thuộc vào nền tảng.

♦ Hệ thống tệp lưu trữ và sắp xếp các tệp trên phương tiện, thường là ổ cứng.

» Tiếp: KIỂM TRA KIẾN THỨC JAVA NIO
« Trước: Gói java.nio
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 !!!