ContextWrapper.GetExternalFilesDir(String) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne le chemin absolu du répertoire sur le système de fichiers externe principal (qui se trouve quelque part sur ExternalStorageDirectory) où l’application peut placer des fichiers persistants qu’elle possède.
[Android.Runtime.Register("getExternalFilesDir", "(Ljava/lang/String;)Ljava/io/File;", "GetGetExternalFilesDir_Ljava_lang_String_Handler")]
public override Java.IO.File? GetExternalFilesDir(string? type);
[<Android.Runtime.Register("getExternalFilesDir", "(Ljava/lang/String;)Ljava/io/File;", "GetGetExternalFilesDir_Ljava_lang_String_Handler")>]
override this.GetExternalFilesDir : string -> Java.IO.File
Paramètres
- type
- String
Type de répertoire de fichiers à retourner. Peut être null pour la racine du répertoire de fichiers ou l’une des constantes d’environnement suivantes pour un sous-répertoire : DirectoryMusic, , DirectoryPodcasts, DirectoryRingtones, DirectoryAlarms, DirectoryNotifications, , DirectoryPicturesou DirectoryMovies.
Retours
Retourne le chemin absolu du répertoire sur l’appareil de stockage principal partagé/externe où l’application peut placer des fichiers persistants qu’elle possède. Ces fichiers sont internes aux applications et ne sont généralement pas visibles par l’utilisateur en tant que supports. C’est comme getFilesDir() dans lequel ces fichiers seront supprimés lorsque l’application est désinstallée, mais il existe certaines différences importantes : le stockage partagé peut ne pas toujours être disponible, car le support amovible peut être éjecté par l’utilisateur. L’état du média peut être vérifié à l’aide de Environment.getExternalStorageState(File). Aucune sécurité n’est appliquée avec ces fichiers. Par exemple, toute application contenant des Manifest.permission.WRITE_EXTERNAL_STORAGE peut écrire dans ces fichiers. Si un périphérique de stockage partagé est émulé (tel que déterminé par Environment.isExternalStorageEmulated(File), son contenu est soutenu par une partition de données utilisateur privée, ce qui signifie qu’il n’existe aucun avantage à stocker des données ici au lieu des répertoires privés retournés par getFilesDir(), etc. À partir de Build.VERSION_CODES. KITKAT , aucune autorisation n’est requise pour lire ou écrire dans le chemin retourné ; il est toujours accessible à l’application appelante. Cela s’applique uniquement aux chemins générés pour le nom du package de l’application appelante. Pour accéder aux chemins d’accès appartenant à d’autres packages, Manifest.permission.WRITE_EXTERNAL_STORAGE et/ou Manifest.permission.READ_EXTERNAL_STORAGE sont requis. Sur les appareils avec plusieurs utilisateurs (comme décrit par UserManager), chaque utilisateur a son propre stockage partagé isolé. Les applications ont uniquement accès au stockage partagé pour l’utilisateur sous lequel elles s’exécutent. Le chemin retourné peut changer au fil du temps si différents supports de stockage partagés sont insérés, de sorte que seuls les chemins relatifs doivent être conservés. Voici un exemple de code classique permettant de manipuler un fichier dans le stockage partagé d’une application : void createExternalStoragePrivateFile() { // Créer un chemin d’accès où nous allons placer notre fichier privé sur un stockage externe //. Fichier de fichier = new File(getExternalFilesDir(null), "DemoFile.jpg« ) ; essayez { // Code très simple pour copier une image à partir de la ressource // de l’application dans le fichier externe. Notez que ce code ne vérifie pas // aucune vérification des erreurs et suppose que l’image est petite (ne tente pas de la copier en blocs). Notez que si le stockage externe n’est pas monté actuellement, cela échoue en mode silencieux. InputStream est = getResources().openRawResource(R.drawable.balloons) ; OutputStream os = new FileOutputStream(file) ; byte[] data = new byte[is.available()] ; is.read(data) ; os.write(data) ; is.close() ; os.close() ; } catch (IOException e) { // Impossible de créer un fichier, probablement parce que le stockage externe n’est pas monté actuellement. Log.w(« ExternalStorage », « Erreur d’écriture " + fichier, e) ; } } void deleteExternalStoragePrivateFile() { // Get path for the file on external storage. Si le stockage // externe n’est pas monté, cela échoue. Fichier de fichier = new File(getExternalFilesDir(null), "DemoFile.jpg« ) ; file.delete() ; } boolean hasExternalStoragePrivateFile() { // Get path for the file on external storage. Si le stockage // externe n’est pas monté, cela échoue. Fichier de fichier = new File(getExternalFilesDir(null), "DemoFile.jpg« ) ; return file.exists() ; } Si vous fournissez un type non Null à cette fonction, le fichier retourné est un chemin d’accès à un sous-répertoire du type donné. Bien que ces fichiers ne soient pas analysés automatiquement par le scanneur multimédia, vous pouvez les ajouter explicitement à la base de données multimédia avec MediaScannerConnection.scanFile. Notez que ce n’est pas le même que Environment.getExternalStoragePublicDirectory(), qui fournit des répertoires de média partagés par toutes les applications. Les répertoires retournés ici appartiennent à l’application et leur contenu sera supprimé lors de la désinstallation de l’application. Contrairement à Environment.getExternalStoragePublicDirectory(), le répertoire retourné ici sera automatiquement créé pour vous. Voici un exemple de code classique permettant de manipuler une image dans le stockage partagé d’une application et de l’ajouter à la base de données multimédia : void createExternalStoragePrivatePicture() { // Créer un chemin où nous allons placer notre image dans notre propre répertoire // images privé. Notez que nous n’avons pas vraiment besoin de placer une image // dans DIRECTORY_PICTURES, car le scanneur multimédia verra // tous les médias dans ces répertoires ; cela peut être utile avec d’autres types de supports // tels que DIRECTORY_MUSIC toutefois pour l’aider à classifier // votre média pour l’affichage à l’utilisateur. Chemin d’accès au fichier = getExternalFilesDir(Environment.DIRECTORY_PICTURES) ; Fichier = new File(path, "DemoPicture.jpg« ) ; essayez { // Code très simple pour copier une image à partir de la ressource // de l’application dans le fichier externe. Notez que ce code ne vérifie pas // aucune vérification des erreurs et suppose que l’image est petite (ne tente pas de la copier en blocs). Notez que si le stockage externe n’est pas monté actuellement, cela échoue en mode silencieux. InputStream est = getResources().openRawResource(R.drawable.balloons) ; OutputStream os = new FileOutputStream(file) ; byte[] data = new byte[is.available()] ; is.read(data) ; os.write(data) ; is.close() ; os.close() ; Indiquez au scanneur multimédia le nouveau fichier afin qu’il soit immédiatement disponible pour l’utilisateur. MediaScannerConnection.scanFile(this, new String[] { file.toString() }, null, new MediaScannerConnection.OnScanCompletedListener() { public void onScanCompleted(String path, Uri) { Log.i(« ExternalStorage », « Scanned " + path + « : ») ; Log.i(« ExternalStorage », « -> uri= » + uri) ; } }) ; } catch (IOException e) { // Impossible de créer un fichier, probablement parce que le stockage externe n’est pas monté actuellement. Log.w(« ExternalStorage », « Erreur d’écriture " + fichier, e) ; } } void deleteExternalStoragePrivatePicture() { // Créez un chemin d’accès où nous allons placer notre image dans le répertoire des images publiques // de l’utilisateur et supprimer le fichier. Si le stockage // externe n’est pas monté, cela échoue. Chemin d’accès au fichier = getExternalFilesDir(Environment.DIRECTORY_PICTURES) ; if (path != null) { Fichier = new File(path, "DemoPicture.jpg« ) ; file.delete() ; } } boolean hasExternalStoragePrivatePicture() { // Créez un chemin d’accès où nous allons placer notre image dans le répertoire des images publiques // de l’utilisateur et vérifier si le fichier existe. Si le stockage externe // n’est pas monté actuellement, cela pense que l’image // n’existe pas. Chemin d’accès au fichier = getExternalFilesDir(Environment.DIRECTORY_PICTURES) ; if (path != null) { Fichier = new File(path, "DemoPicture.jpg« ) ; return file.exists() ; } retourne la valeur false ; } Type de paramètres String : cette valeur peut être null. Retourne le fichier Cette valeur peut être null.
- Attributs
Remarques
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Java documentation pour android.content.ContextWrapper.getExternalFilesDir(java.lang.String).