Tags:

FileDescriptor trong java

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về FileDescriptor trong java. Để dễ hiểu chúng ta cùng đi đến ví dụ sau.

Ví dụ Khi chúng ta mở một tập tin lên thì hệ thống sẽ khởi tạo một entry đại diện cho tập tin đó và lưu trữ thông tin của nó, entry này được gọi là FileDescriptor.

Về cơ bản, FileDescriptor cung cấp cơ chế xử lý tương ứng với từng cấu trúc của hệ thống bên dưới khi chúng ta mở tập tin, mở một socket hoặc từ các nguồn khác etc.

Note: Ứng dụng không nên khởi tạo FileDescriptor object, chúng ta chỉ cần khởi tạo FileInputStream hoặc FileOutputStream object và chúng sẽ chứa cả FileDescriptor object bên trong. 

Ví dụ FileDescriptor 

import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;

 class JavaFileDescriptorExample {

    public static void main(String[] args) throws IOException {

        FileInputStream fileInputStream = new FileInputStream(new File(
                "/Users/nguyenthanhhai/Desktop/test.txt"));
        FileDescriptor fd = fileInputStream.getFD();

        System.out.println(" File descriptor Hashcode: " + fd.hashCode());

        System.out.println(" File descriptor valid: " + fd.valid());
    }

}

Các method trong FileDescriptor 

sync() – Đồng bộ hoá tất cả các bộ đệm với các thiết bị bên dưới. Khi tất cả các chỉnh sửa dữ liệu trên FileDescriptor được ghi xuống thiết bị sync sẽ return. Ví dụ đối với BufferedOutputStream dữ liệu sẽ được lưu trữ trong bộ nhớ đệm sau khi bộ nhớ đệm đầy thì nó mới bắt đầu ghi xuống tập tin, việc gọi sync() sẽ khiến BufferedOutputStream gọi flush() xuống FileDescriptor trước khi các dữ liệu này được đồng bộ xuống thiết bị.

Cú pháp

public void sync()

parameters: Không

Return: void

Exception: SyncFailedException sẽ được ném ra nếu không có sự đảm bảo 
việc đồng bộ dữ liệu giữ bộ đệm với thiết bị.

valid() – Kiểm tra FileDescritor object có hợp lệ hay không?

Cú pháp

public boolean valid()

Parameter: Không

Return: true nếu FileDescriptor hợp lệ, ngược lại false

Tóm lược

FileDescriptor là khái niệm khá mơ hồ vì hầu hết các tính năng của nó được thực hiện bên dưới (sync() – đồng bộ hoá dữ liệu giữa các bộ đệm với thiết bị). Mình thường sử dụng valid() để kiểm tra xem FileDescriptor object có hợp lệ hay không vậy thôi. 

Hiện tại mình vẫn chưa biết nhiều cách để sử dụng FileDescriptor, nếu các bạn biết hãy bình luận cho mình và mọi người tham khảo nghen.

Nguồn tham khảo

https://examples.javacodegeeks.com/core-java/io/filedescriptor/java-file-descriptor-example/

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x