I.Giới thiệu

JSR 75 là một gói tùy chọn có bao gồm hai gói. Đây là các API light weight trên các thiết bị mà thực hiện JSR 75, FileConnection (FC) javax.microedition.io.file .*; và Quản lý thông tin cá nhân (PIM) javax.microedition. pim .*; gói FileConnection cho phép các ứng dụng Java ME để tạo, đọc, và viết các tập tin và thư mục nằm trong bộ nhớ của thiết bị di động và thẻ nhớ ngoài. CLDC 1.0 là yêu cầu tối thiểu cho tập API này.

II.Tổng quan

JSR 75 cho phép bạn truy cập vào hai lĩnh vực chính; đó là kết nối file (FileConnection) và Quản lý thông tin cá nhân (PIM).

  • FileConnection

Các API trong gói tùy chọn FileConnection  trên các thiết bị Java ME  được sử dụng để truy cập vào hệ thống tập tin nằm trong thiết bị di động, chủ yếu là truy cập vào các thiết bị lưu trữ như thẻ nhớ ngoài và xử lý file.

  • Quản lý thông tin cá nhân

Các API trong gói tùy chọn PIM (PIM) trên các thiết bị Java ME được sử dụng để truy cập vào dữ liệu quản lý thông tin cá nhân có nguồn gốc từ thiết bị di động, chẳng hạn như sách địa chỉ, lịch, các sự kiện và các danh sách công việc phải làm.

III.Tìm hiểu về FileConnection

3.1.Mô tả các API  của FileConnection

Các API FileConnection nằm trong gói javax.microedition.io.file; gồm có 2 interface và 3 class.

Interface Mô tả
FileConnection Giao diện này được dùng để truy cập vào file hay thư mục nằm trên hệ thống file của thiết bị.
FileSystemListener Giao diện này được dùng để nhận trạng thái thông báo khi thêm hay xóa một file trên thiết bị.
Class Mô tả
FileSystemRegistry Trung tâm đăng ký các listener hệ thống tập tin trong việc thêm hay xóa của hệ thống file trên thiết bị.
ConnectionClosedException Ngoại lệ này được ném ra khi một phương thức hay một kết nối file được gọi nhưng không thể hoàn tất bởi kết nối đã bị đóng.
IllegalModeException Ngoại lệ này được ném ra khi một phương thức được gọi mà bắt buộc phải có một kiểu bảo mật cụ thể, như READ hay WRITE, nhưng kết nối đã mở không thuộc kiểu đó.

3.2.Kiểm tra máy có hỗ trợ FileConnection hay không

Để kiểm tra xem các máy có hỗ trợ các API của FileConnection hay không, bạn sử dụng cách sau:

System.getProperty(“microedition.io.file.FileConnection.version “).
Nếu thiết bị có hỗ trợ, thì phiên bản FileConnection sẽ được trả về, ngược lại trả về null. Có thể sử dụng đoạn code sau để xem kết quả trả về:

public class MainMidlet extends MIDlet {
public MainMidlet() {
   Form form = new Form("File Connection version");
        form.append(System.getProperty"microedition.io.file.FileConnection.version"));
        Display.getDisplay(this).setCurrent(form);
      }
  }

3.3.File separator

Ngoài thuộc tính microediton.io.file.FileConnection.version, FileConnection còn hỗ trợ thêm thuộc tính file.separator.

Thuộc tính file.separator trả về một chuỗi đại diện cho ký tự tách file nằm trong platform. Ví dụ như trả về chuỗi ký tự “/” nếu là hệ điều hành Windows; hay “\” nếu là hệ điều hành UNIX.

...
     form.append(System.getProperty("microedition.io.file.FileConnection.version"));
     form.append(System.getProperty("file.separator "));
...

3.4.Thiết lập kết nối

Các API của FileConnection sử dụng Generic Connection Framework(GCF) cho các kết nối file hệ thống. Ứng dụng có thể sử dụng kết nối file thông qua phương thức Connector.open(String protocol); trong đó tham số protocol phải là một đường dẫn tuyệt đối, ví dụ như:

file://host/root/directory/…/name

Trong đó:

  • host – phần tử host có thể trống(empty) và kết nối sẽ được mở nếu chuỗi chỉ tham chiếu đến file trên host cục bộ.
  • root – phần tử root cũng có thể empty và tương ứng với một điểm khung(mount) logic cho một đơn vị lưu trữ cụ thể.
  • director – tên thư mục.
  • name – tên file.

Bảng sau sẽ mô tả một vài giá trị của root và cách để mở chúng:

Để mở CF(Compact Flash) card (FileConnection)Connector.open(“file:///CFCard/”);
Để mở SD(Secure Digital) cart (FileConnection)Connector.open(“file:///SDCard/”);
Để mở Memory Stick (FileConnection)Connector.open(“file:///MemoryStick/”);
Để mở bất kỳ drive nào của thiết bị (FileConnection)Connector.open(“file:///C:/”);

3.5. Một số ví dụ

VD1: Tạo một FileConnection.

...
private final String URL=file://localhost/root1/mytext.txt;
FileConnection fileConn =(FileConnection)Connector.open(URL,Connector.READ_WRITE);
/*do file/directory operations */
fileConn.close();
...

Lưu ý rằng mở kết nối sử dụng đối tượng FileConnection khác với các kiểu kết nối khác, đó là phương thức Connector.open() có thể trả về hoàn tất mà không cần phải tham chiếu tới một thực thể đang tồn tại như file hay thư mục. Do đó, bạn cần kiểm tra xem thư mục hay file tạo ra đã tồn tại hay chưa để tạo mới nó, để kiểm tra bạn nên sử dụng phương thức isDirectory() hay exists().
Khi FileConnection trỏ tới một file không tồn tại, thì nó không thể thực hiện bất kỳ thao tác nào liên quan đến file hay thư mục mà nó trỏ tới.

VD2: Tạo một file trên một thư mục.

...
public void createFile() {
        final String URL = "file:///root1/SMI";
        FileConnection fileConn = null;
        try {
            fileConn = (FileConnection) Connector.open(URL, Connector.READ_WRITE);
            if (!fileConn.isDirectory()) {
                fileConn.mkdir();
            }
            fileConn.close();
            fileConn = (FileConnection) Connector.open(URL + "temp.txt", Connector.READ_WRITE);
            if (!fileConn.exists()) {
                fileConn.create();
            }
            fileConn.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
        ...


Các bài liên quan:
File Connection - JSR 75 (Phan 2)