Detaillierte Erläuterung des internen Speichers und des externen Speichers (öffentliches Verzeichnis, privates Verzeichnis, Cache-Verzeichnis) im Android-System

Um ein Konzept zu verdeutlichen, sind der interne Speicher und der externe Speicher von Android kein sogenannter mobiler Speicher. Der integrierte Speicher ist ein interner Speicher. Die SD-Karte ist eine externe Speicherwolke.
Android unterscheidet nicht physisch zwischen internem und externem Speicher, sondern logisch.

1. Konzept

Interner Speicher bezieht sich auf den internen Speicherplatz des Systems. Durch ein Verzeichnis wird logisch ein Ordner unter dem
Datenverzeichnis unterschieden. Zusätzlich zum Datenverzeichnis gibt es ein App-Verzeichnis zum Speichern der vom System heruntergeladenen APK-Informationen und ein Datenverzeichnis zum Speichern verschiedener Dateien.
Beispiel:
Die von sharedPreferenced gespeicherten Dateien befinden sich im Verzeichnis / data / data // shared_prefs /.
Die von Sqlite gespeicherten Dateien befinden sich im Verzeichnis / data / data // database /.

Externer Speicher ist viel einfacher
1. Mobiltelefonhersteller bringen ihren eigenen Speicher mit, der oft als 16 GB, 64 GB usw. bezeichnet wird.
2. SD-Karte
Hierbei handelt es sich um externen Speicher

Zweitens erhalten Sie das funktionsfähige interne Speicherverzeichnis (löschen, wenn der Benutzer die App löscht)

getCacheDir().getPath():内部缓存目录

/data/user/0/packname/cache/      //7.0以上
/data/data/packname/cache/



getFilesDir().getPath():内部文件目录

/data/user/0/packname/files/
/data/data/packname/files/

Die Ordner shared_prefs und database verfügen über spezielle Tools wie sharedPreferenced und Sqlite.

Hinweis: Der Unterschied zwischen Daten / Daten / ... und Daten / Benutzer / 0 / ... besteht darin, dass letztere Benutzer unterscheiden, dies ist jedoch nicht wichtig

3. Besorgen Sie sich das funktionsfähige externe Speicherverzeichnis

Der externe Speicher ist in ein externes öffentliches Verzeichnis, ein externes privates Verzeichnis und ein Cache-Verzeichnis unterteilt:

1. Neun externe öffentliche Verzeichnisse:

Environment.getExternalStoragePublicDirectory(context,type);

/storage/emulate/0/....

有九种type,分别对应不同的目录,如下

DIRECTORY_MUSIC:音乐类型    /storage/emulate/0/music
DIRECTORY_PICTURES:图片类型
DIRECTORY_MOVIES:电影类型
DIRECTORY_DCIM:照片类型,相机拍摄的照片视频都在这个目录(digital camera in memory) 
DIRECTORY_DOWNLOADS:下载文件类型   /storage/emulate/0/downloads
DIRECTORY_DOCUMENTS:文档类型
DIRECTORY_RINGTONES:铃声类型
DIRECTORY_ALARMS:闹钟提示音类型
DIRECTORY_NOTIFICATIONS:通知提示音类型

2. Externes privates Verzeichnis (gelöscht, wenn der Benutzer die App löscht)

getExternalFilesDir(type)

/storage/emulated/0/Android/data/packagename/files/

3. Externes Cache-Verzeichnis (gelöscht, wenn der Benutzer die App löscht)

getExternalCacheDir()

/storage/emulated/0/Android/data/packname/cache/

4. Externes Stammverzeichnis

Environment.getExternalStorageDirectory()

/storage/emulated/0
Pfad Methodenname Gehören zu
/ data / data / <包 名> / files getFilesDir () Innen
/ data / data / <包 名> / cache getCacheDir () Innen
/ data / data / <包 名> / app_ getDir () Innen
/ storage / emulated / 0 Environment.getExternalStorageDirectory () Externe Wurzel
/ storage / emulated / 0 / Environment.getExternalStoragePublicDirectory (Typ) Neun externe öffentliche Verzeichnisse
/ storage / emulated / 0 / Android / data / <包 名> / files / getExternalFilesDir (Typ) Externes privates Verzeichnis
/ storage / emulated / 0 / Android / data / <包 名> / cache getExternalCacheDir () Externes Cache-Verzeichnis

Hinweis: Unabhängig von extern oder intern ist der Paketname privat, sofern er einen Paketnamen enthält, und Benutzer benötigen root, um darauf zugreifen zu können. Die Methoden zum Abrufen des Pfads werden alle vom Kontext aufgerufen und beim Löschen der App durch den Benutzer zerstört. Die Pfade ohne den Paketnamen werden von der Umgebung aufgerufen.

Hinweis:
Pfadanalyse und entsprechendes Verzeichnis von FileProvider:

Der Stammpfad entspricht DEVICE_ROOT, der Datei DEVICE_ROOT = new File ("/"), dem Stammverzeichnis, und muss im Allgemeinen nicht konfiguriert werden.
Dateipfad entspricht dem internen Dateiverzeichnis von getFilesDir ().
Der Cache-Pfad entspricht dem von getCacheDir () erhaltenen internen Cache-Verzeichnis.
Der externe Pfad entspricht dem externen Stammverzeichnis, auf das Environment.getExternalStorageDirectory () verweist.
Der Pfad für externe Dateien entspricht dem externen privaten Verzeichnis, das von ContextCompat.getExternalFilesDirs () abgerufen wurde.
Der externe Cache-Pfad entspricht dem externen Cache-Verzeichnis, das von ContextCompat.getExternalCacheDirs () abgerufen wurde.

Veröffentlichte 60 Originalartikel · 25 Lobpreisungen · 10.000+ Aufrufe

Ich denke du magst

Origin blog.csdn.net/qq_41466437/article/details/104970199
Empfohlen
Rangfolge