Androidで一時ファイルを作成する最良の方法は何ですか?
File.createTempFileは使用できますか?ドキュメントは非常にあいまいです。
特に、で作成された一時ファイルがいつFile.createTempFile
削除されるかは明らかではありません。
Androidで一時ファイルを作成する最良の方法は何ですか?
File.createTempFileは使用できますか?ドキュメントは非常にあいまいです。
特に、で作成された一時ファイルがいつFile.createTempFile
削除されるかは明らかではありません。
回答:
これは私が通常行うことです:
File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
それらの削除についても、私は完全にはわかりません。私はこれをキャッシュの実装で使用しているため、キャッシュディレクトリのサイズがプリセット値になるまで、最も古いファイルを手動で削除します。
データを永続的に保存するのではなく、キャッシュする場合は、を使用
getCacheDir()
して、アプリケーションが一時キャッシュファイルを保存する内部ディレクトリを表すFileを開く必要があります。デバイスの内部ストレージ容量が少ない場合、Androidはこれらのキャッシュファイルを削除して容量を回復する場合があります。ただし、これらのファイルのクリーンアップをシステムに依存しないでください。キャッシュファイルは常に自分で保守し、消費されるスペースの合理的な制限(1MBなど)内に収める必要があります。ユーザーがアプリケーションをアンインストールすると、これらのファイルは削除されます。
キャッシュファイルを保存する外部ストレージディレクトリを表すファイルを開くには、を呼び出します
getExternalCacheDir()
。ユーザーがアプリケーションをアンインストールすると、これらのファイルは自動的に削除されます。
ContextCompat.getExternalFilesDirs()
上記のと同様に、を呼び出して、セカンダリ外部ストレージ(使用可能な場合)のキャッシュディレクトリにアクセスすることもできますContextCompat.getExternalCacheDirs()
。ヒント:ファイルスペースを維持してアプリのパフォーマンスを維持するには、キャッシュファイルを慎重に管理し、アプリのライフサイクル全体で不要になったキャッシュファイルを削除することが重要です。
一時的な内部ファイルの場合、2つのオプションがあります
1。
File file;
file = File.createTempFile(filename, null, this.getCacheDir());
2。
File file
file = new File(this.getCacheDir(), filename);
どちらのオプションもアプリケーションキャッシュディレクトリにファイルを追加するため、必要に応じてクリアしてスペースを空けることができますが、オプション1はファイルを一意にするためにファイル名の最後に乱数を追加します。また.tmp
、デフォルトのファイル拡張子が追加されますが、2番目のパラメーターを使用して任意に設定できます。乱数の使用は、ファイル名を指定しても、番号がサフィックス/ファイル拡張子(.tmp
デフォルトでは)とともに追加されるため、変更されないことを意味します。たとえば、ファイル名をとして指定し、としてinternal_file
出力されinternal_file1456345.tmp
ます。内線番号は指定できますが、追加する番号は指定できません。ただし、生成されたファイル名はfile.getName();
ただし、ファイルをどこかに保存して、ファイルの削除や読み取りなど、いつでも使用できるようにする必要があります。したがって、この理由から、指定するファイル名は作成されるファイル名であるため、2番目のオプションを選択します。
context.getCacheDir()を使用してキャッシュディレクトリを使用できます。
File temp=File.createTempFile("prefix","suffix",context.getCacheDir());
あなたはFile.deleteOnExit()
方法を使うことができます
https://developer.android.com/reference/java/io/File.html#deleteOnExit()
簡単にそれを行います。ドキュメントによると https://developer.android.com/training/data-storage/files
String imageName = "IMG_" + String.valueOf(System.currentTimeMillis()) +".jpg";
picFile = new File(ProfileActivity.this.getCacheDir(),imageName);
使用後に削除します
picFile.delete()