web-dev-qa-db-fra.com

Android créer des dossiers dans la mémoire interne

Existe-t-il un moyen/est-il autorisé de créer des dossiers dans la mémoire interne d'Android. Exemple :

- data
-- com.test.app (application's main package)
---databases (database files)
---files (private files for application)
---shared_prefs (shared preferences)

---users (folder which I want to create)

Puis-je créer un dossier users dans la mémoire interne par exemple?

15
Android-Droid

Je l'ai utilisé pour créer un dossier/fichier dans la mémoire interne:

File mydir = context.getDir("mydir", Context.MODE_PRIVATE); //Creating an internal dir;
File fileWithinMyDir = new File(mydir, "myfile"); //Getting a file within the dir.
FileOutputStream out = new FileOutputStream(fileWithinMyDir); //Use the stream as usual to write into the file.
41
Android-Droid

VOUS NE DEVEZ PAS UTILISER CELA SI VOUS VOULEZ ACCÉDER FACILEMENT À VOS FICHIERS

File newdir= context.getDir("DirName", Context.MODE_PRIVATE);  //Don't do
if (!newdir.exists())
    newdir.mkdirs();

AU LIEU, faites ceci:

Pour créer un répertoire sur la mémoire de stockage principale du téléphone (généralement la mémoire interne), vous devez utiliser le code suivant. Veuillez noter que ExternalStorage dans Environment.getExternalStorageDirectory () ne fait pas nécessairement référence à la carte SD, il renvoie la mémoire de stockage principale du téléphone

File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "MyDirName");

if (!mediaStorageDir.exists()) {
    if (!mediaStorageDir.mkdirs()) {
        Log.d("App", "failed to create directory");
    }
}

Le répertoire créé à l'aide de ce code sera facilement visible par l'utilisateur du téléphone. L'autre méthode (mentionnée en premier) crée un répertoire à l'emplacement (/data/data/package.name/app_MyDirName), donc l'utilisateur de téléphone normal ne pourra pas y accéder facilement et vous ne devez donc pas l'utiliser pour stocker des vidéos/photos, etc.

Vous aurez besoin d'autorisations, dans AndroidManifest.xml

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.WRITE_INTERNAL_STORAGE" />
15
prodev

context.getDir ("mydir", ...); Cela crée votre.package/app_mydir /

 /** Retrieve or creates <b>path</b>structure inside in your /data/data/you.app.package/
 * @param path "dir1/dir2/dir3"
 * @return
 */
private File getChildrenFolder(String path) {
            File dir = context.getFilesDir();
    List<String> dirs = new ArrayList<String>(Arrays.<String>asList(path.split("/")));
    for(int i = 0; i < dirs.size(); ++i) {
        dir = new File(dir, dirs.get(i)); //Getting a file within the dir.
        if(!dir.exists()) {
            dir.mkdir();
        }
    }
    return dir;
}
4
user1269737