首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 文件系統操作實戰:基於 JSR-75 的完整指南

     編輯:J2ME

前言

JSR-75 (FileConnection API) 賦予 J2ME 應用訪問手機本地文件系統的能力。本文針對常見操作場景,整理了從環境檢測到讀寫實踐的完整技術要點,基於 S60v3 實機測試驗證。

一、檢測設備是否支援文件系統

通過檢查系統屬性 microedition.io.file.FileConnection.version 是否存在來判斷:

public boolean isSupportFileSystem() {
    String v = System.getProperty("microedition.io.file.FileConnection.version");
    return v != null;
}

二、建立文件連接

1. 連接 URL 格式

採用 file:// 協議,本機文件需加 localhost 前綴:

  • 範例:file://localhost/E:/data.txt

2. 權限模式

  • Connector.READ:唯讀
  • Connector.WRITE:唯寫
  • Connector.READ_WRITE:讀寫

3. S60v3 目錄訪問規則(實測)

驅動器可訪問路徑備註
E:所有目錄需記憶卡支援
C:C:/data/Images
C:/data/Sounds
C:/data/Videos
其他目錄拋出 SecurityException

可通過 WTK 自帶的 PDADemo -> FileBrowser 實測具體可訪問路徑。

4. 打開連接代碼範例

FileConnection fc = (FileConnection) Connector.open(
    "file://localhost/E:/a.dat", Connector.READ_WRITE);

三、文件讀取操作

獲取輸入流後按標準流讀取邏輯處理:

InputStream fis = fc.openInputStream();
// 後續邏輯同網絡數據讀取

四、文件寫入操作與陷阱

1. 基本寫入

byte[] data = "Hello World".getBytes();
OutputStream fos = fc.openOutputStream();
fos.write(data, 0, data.length);

2. 關鍵行為差異(N93 實測)

寫入總是從文件開頭開始,且不會自動清空原有內容。

  • 原文件:abcdefghijk
  • 寫入 123 後:123defghijk(而非追加或截斷)

3. 追加寫入變通方案

  1. 先讀取原內容到 StringBuffer
  2. 在記憶體中追加新數據
  3. 重新寫入整個文件

目前未發現更優雅的原生追加 API,歡迎補充。

五、完整讀寫代碼片段

String szFileName = "file:///root1/text.txt";
FileConnection fconn = (FileConnection) Connector.open(szFileName);
InputStream in = fconn.openInputStream();
// 讀取邏輯...
// 寫入邏輯...

總結

JSR-75 雖功能強大,但不同廠商實現差異大,權限控制嚴格。實際開發中務必在目標機型上充分測試路徑訪問與讀寫行為,並妥善處理異常分支。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved