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?
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.
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" />
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;
}