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)
1 responses to “File Connection – JSR 75 (Phan 1)”
java 2 micro edition
April 2nd, 2011 at 13:25
Bài viết rất hay. thanks !!!