それぞれの概要を取得するにはAndroidのローカルファイルパスキャッシュ方式
入門
毎日の開発は常にローカルにキャッシュファイルへの必要性が発生し、常に対応するものを、いくつかの方法のパス利用可能要約対応するキャッシュパスのパスを取得するには、いくつかの方法で混乱して少しされています
パスを取得するいくつかの方法
テストコードを見て、ログを印刷
String CacheFilePath =getCacheDir().getAbsolutePath();
String ExternalCacheFilePath = getExternalCacheDir().getAbsolutePath();
String ExternalStorageFilePath =Environment.getExternalStorageDirectory().getAbsolutePath();
File CacheFile = new File(CacheFilePath,"CacheDir.txt");
File ExternalCacheFile = new File(ExternalCacheFilePath,"ExternalCacheDir.txt");
File ExternalStorageFile = new File(ExternalStorageFilePath,"ExternalStorage.txt");
try {
if (CacheFile.createNewFile()){
Log.e("FileTest","CacheFile is created :" + CacheFile.getAbsolutePath());
}else if (CacheFile.exists()){
Log.e("FileTest","CacheFile is created :" + CacheFile.getAbsolutePath());
}
if (ExternalCacheFile.createNewFile()){
Log.e("FileTest","ExternalCacheFile is created " + ExternalCacheFile.getAbsolutePath())
}else if (ExternalCacheFile.exists()){
Log.e("FileTest","ExternalCacheFile is created " + ExternalCacheFile.getAbsolutePath());
}
if (ExternalStorageFile.createNewFile()){ //NEED PERMISSION
Log.e("FileTest","ExternalStorageFile is created :" + ExternalStorageFile.getAbsolutePath());
}else if (ExternalStorageFile.exists()){
Log.e("FileTest","ExternalStorageFile is created :" + ExternalStorageFile.getAbsolutePath());
}
} catch (IOException e) {
e.printStackTrace();
}
印刷ログ
分析
三つの方法に対応します:
getCacheDir()
getExternalCacheDir()
Environment.getExternalStorageDirectory()
- 内部メモリに属している:第一の方法
- 外部記憶装置に属する2つのメソッドの後
3つのディレクトリの違い
方法 | カテゴリ | 技量 | パス | リマーク |
---|---|---|---|---|
context.getCacheDir() | 内蔵メモリ | あなたは、許可を必要としません | データ/データ/パッケージ名/キャッシュ | 自動的にアプリケーションをアンインストールした後に削除 |
context.getExternalCacheDir() | 外部ストレージ | あなたは、許可を必要としません | アンドロイド/データ/パッケージ名/キャッシュ | 自動的にアプリケーションをアンインストールした後に削除 |
getExternalFilesDir(文字列型) | 外部ストレージ | あなたは、許可を必要としません | アンドロイド/データ/包名/ファイル | 自動的にアプリケーションをアンインストールした後、削除、入ってくる非空の文字列には、そのディレクトリ内のAndroid /データ/パッケージ名/ファイル/テストがされて入ってくる「テスト」として適切なフォルダを作成する場合は |
Environment.getExternalStorageDirectory() | 外部ストレージ | 必要な許可 | SDカードや外部ストレージルートパス | アンインストールした後でアプリケーションがまだ存在しています |
そして、我々は電話でのファイルマネージャで持っている内部記憶データ/データのパスに見ることができない、ASファイル管理上の上に引っ張って右下隅に、ここで見ることができます
いくつかの一般的な変換方法
File 转 Uri
private static Uri getUriForFile(Context context, File file) {
if (context == null || file == null) {//简单地拦截一下
throw new NullPointerException();
}
Uri uri;
if (Build.VERSION.SDK_INT >= 24) {
uri = FileProvider.getUriForFile(context, "com.hjl.android7.fileprovider", file);
} else {
uri = Uri.fromFile(file);
}
return uri;
}
Uri 转 File
public File uri2File(Uri uri) { return new File(uri.getPath()); }
ビットマップファイルのパスを回し
public Bitmap File2Bitmap(String filePath){
File file = new File(filePath);
Uri uri = Uri.fromFile(file);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(mContext.getContentResolver(), uri);
}
ビットマップファイル転送
public static boolean writeBitmapToFile(Bitmap bitmap, File file, int quality){
boolean flag = false;
try {
FileOutputStream fos = new FileOutputStream(file);
flag = bitmap.compress(Bitmap.CompressFormat.JPEG, quality, fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}