2012-04-23 2 views
1

私のAndroidアプリでは、ファイルとたくさんのファイルを含むフォルダを読み込みます。私はこれらを資産として、資源として、あるいは全く別のものとして追加すべきかどうかを判断しようとしています。Android:外部ファイルとフォルダをアセットとして保存していますか?リソース?他に何か?

ファイルは、ファイルに含まれているものからオブジェクトを作成するクラスコンストラクターにパスが渡されるXMLファイルです。私は必要に応じてコンストラクタコードにアクセスできます。

このフォルダには、特別にフォーマットされた人間が読めないファイルが多数含まれています。フォルダーへのパスは、フォルダーの構造を認識しているオブジェクトを作成する別のコンストラクターに渡されます。私はそのコードにアクセスすることはできません。

ああ、これらの2つは、同じアプリで必要とされているということ以外は、互いに関係がありません。

これをどのように保存する必要がありますか?私は最初にそれらを資産として追加することを考えましたが、明らかに私は機能しない資産の入力ストリームしか得ることができません。フォルダをリソースとして追加すると、res /の下の特定のサブフォルダに移動する必要がありますか?どれ? te XMLファイルはres/xmlの下に置かなければなりませんか?アセットかリソースかに関係なく、ファイルとフォルダにアクセスするために必要なデフォルトのルートパスはありますか?

Thx!

+0

これらのファイルは時間の経過とともに変更する必要がありますか、ソースコードに同梱されていて変更されていない場合は問題ありませんか? – wsanville

+0

私は、フォルダ内のファイルはかなり静的だと言うでしょう。つまり、更新される可能性がありますが、おそらくコードそのものと同じくらい頻繁に更新される可能性があります(バグ修正など)。 XMLファイルは静的ではありません。これにはソートのリストが含まれており、ユーザーはアプリを使用してリストにアイテムを追加するオプションを持っています。 –

+0

アセットとリソースは実行時に変更できませんので、考慮してください。 – wsanville

答えて

2

性能上の理由から、私はXMLファイルをres/xml/の下に置きます。 res/xml/は任意のXMLをサポートし、XMLでエンコードされたすべてのリソースは通常のファイルの解析よりも約10倍高速に解析されます。 "ファイルに含まれているものからオブジェクトを作成するクラスコンストラクタ"は、そのXMLのResourcesオブジェクトから取得するXmlResourceParserを使用します。

リソースにはフォルダ構造を持たない(rawまたはその他)ので、フォルダに関してはassets/を使用してください。

私は最初にそれらをアセットとして追加することを考えましたが、明らかに私は動作しないアセットの入力ストリームしか取得できません。

アプリでファイルをパッケージ化して直接使用することはできません。リソースも資産もファイルとして直接利用することはできません。そのコンテンツをファイルとして取得する唯一の方法は、ストリームを使用して自分自身でローカルファイルにコピーすることです。これにより、使用するストレージの量が増え、XMLの場合は解析のパフォーマンスが低下します。

関連する問題