私のアプリは大量のテキスト ファイルを読み取ります。現時点では、すべてをアセット フォルダーに保存しましたが、実行時にこれらのファイルを編集したいと考えています。
最初の実行時にこれらすべてのファイルを内部ストレージにコピーするか、Eclipse でフォルダーを作成してファイルを保存できますか。
もしそうなら、それらを読むためのファイルパスは何ですか?
ありがとう。
私のアプリは大量のテキスト ファイルを読み取ります。現時点では、すべてをアセット フォルダーに保存しましたが、実行時にこれらのファイルを編集したいと考えています。
最初の実行時にこれらすべてのファイルを内部ストレージにコピーするか、Eclipse でフォルダーを作成してファイルを保存できますか。
もしそうなら、それらを読むためのファイルパスは何ですか?
ありがとう。
ファイルを Eclipse の Assets フォルダーに追加した場合、それらはアプリと共に読み込まれ、実行時に次のコマンドでアクセスできます。
InputStream in = context.getAssets().open(filename);
その後、通常どおり InputStream を使用できます。を使用してアクティビティのコンテキストを取得できますgetApplicationContext()
。
ファイルを書きたい場合:
FileOutputStream fOut = context.openFileOutput(fileName, Context.MODE_PRIVATE);
Android は必要なものをすべて提供します。外部ストレージに保存したい場合は、簡単に行うことができます
Environment.getExternalStorageDirectory().getPath()
私がお勧めするのは、それをキャッシュディレクトリに保存し、必要に応じて編集することです。これは、ニーズに最も適しているように思われるためです。
getCacheDir().getPath()
ただし、次のことに注意してください。
注: システムがこれらのファイルを削除してくれることに頼るべきではありません。キャッシュ ファイルで消費するスペースの量には常に 1 MB などの適切な最大値を設定し、そのスペースを超えた場合はそれらのファイルを整理する必要があります。
PS: この方法で外部ディレクトリに書き込むことができるかどうかを確認できます:
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
示されているデータストレージの ように、可能な場合は外部ディレクトリに書き込むことができ、そうでない場合は内部キャッシュにフォールバックできます。
また、ファイルシステムのどこにでも書き込むことができますが、ファイルをアプリケーション専用にすることができます
FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
あなたが言及したように、これらのファイルを内部ストレージにコピーする必要があります。ファイルがアプリケーション専用である場合、外部ストレージを使用する必要はありません。Eclipse のフォルダーにファイルを保存すると言うとき、APK に同梱されるフォルダーを作成することについて話していると思います。このようなファイルは書き込み可能ではありません。
ファイルを外部ストレージに保存できます。
Environment.getExternalStorageDirectory()