2

ファイルを書き込む必要がある MIDlet を作成しています。これを実現するために、JSR-75 の FileConnection を使用しています。

この MIDlet をできるだけ多くのデバイス (理想的には、JSR-75 をサポートするすべての MIDP 2.0 デバイス) で実行することを目的としています。

いくつかのエミュレーターと HTC Touch Pro2 では、次のコードを完全に使用してファイルシステムのルートを取得できます。

Enumeration drives = FileSystemRegistry.listRoots();
String root = (String) drives.nextElement();
String path = "file:///" + root;

ただし、Nokia S60 第 5 版エミュレータでは、このパスへの FileConnection を開こうとすると、java.lang.SecurityException がスローされます。どうやら S60 デバイスは、ファイルシステムのルートへの接続を許可していないようです。System.getProperty("fileconn.dir.photos") のようなものを使用できることはわかっていますが、それもすべてのデバイスでサポートされているわけではありません。

それで、私の実際の質問: 最大の移植性を可能にする FileConnection を作成するためのパスを取得するための最良の方法は何ですか?

ありがとう。

編集:列挙型のすべてのルートを反復処理し、書き込み可能なルートを確認できると思いますが、2 つの理由から、これはほとんど最適ではありません。まず、必ずしも書き込み可能なルートが存在するとは限りません。第二に、これは電話のメモリまたはメモリカードである可能性があるため、保存方法はデバイス間で一貫していないため、かなり醜い.

4

2 に答える 2

2

ルートに含まれるフォルダーを見つけるために、ルートへの読み取り専用接続を開くことになっています。

原則として、フォルダーへの read_write 接続を開くと SecurityException がスローされる場合は、読み取り専用接続を開いてサブフォルダーを参照し、書き込み可能なフォルダーを見つけてください。

具体的には、Symbian (および MIDlet に安全なデータ ケージを提供できるほど高度なその他のプラットフォーム) では、 を使用System.getProperty("fileconn.dir.private");して書き込み可能な領域を見つけることができます。

于 2010-03-22T18:58:01.943 に答える
0

私たちが何をしているかをお話しします。ファイル システムのルートと、該当する場合は SD カードのルートを検出するだけのテスト アプリがあります。これをjadパラメータとして設定します。コードはそれを Jad ファイルから読み取ります。さまざまなデバイス用に jar を再コンパイルする必要がないため、これは非常にうまく機能します。異なるファイル システム ルートを持つハンドセットの jad パラメータを変更するだけです。

于 2010-03-22T18:57:12.850 に答える