2013-04-05 15 views
5

non sono in grado di ottenere i metodi per creare cartelle nella memoria interna,creazione della cartella nella memoria interna

ho passato attraverso alcune conversazioni in Android create folders in Internal Memory e Problem facing in reading file from Internal memory of android. Ma ancora non sono in grado di soddisfare il mio requisito.

Il mio requisito è, voglio creare una cartella in memoria interna, lì voglio memorizzare un video.

Grazie mille in anticipo per i preziosi feedback.

risposta

16

provare il seguito

File mydir = context.getDir("users", Context.MODE_PRIVATE); //Creating an internal dir; 
if (!mydir.exists()) 
{ 
    mydir.mkdirs(); 
}  
+5

Penso che il controllo se esiste non è necessario qui. Base sulla documentazione: "La directory sarà stata creata se non esiste già." – Paul

+1

if (! Mydir.exists) dovrebbe essere ** if (! Mydir.exists()) ** –

+0

come si aggiunge un file a questa dir specifica? –

6

Ecco il codice che sto usando per la creazione di file nella memoria interna:

File myDir = context.getFilesDir(); 
    // Documents Path 
    String documents = "documents/data"; 
    File documentsFolder = new File(myDir, documents); 
    documentsFolder.mkdirs(); // this line creates data folder at documents directory 

    String publicC = "documents/public/api." + server; 
    File publicFolder = new File(myDir, publicC); 
    publicFolder.mkdirs(); // and this line creates public/api.myservername folder in internal memory 
+0

Tu non hai idea di quanto tempo ho cercato per questo. Ogni volta che provavo creava il file all'esterno della directory dei file e aggiungeva "app_" alla directory. +1 Da parte mia per la soluzione eccellente, piccola e pratica. –

0

C'è un "cacheDirectory" nel vostro "/ dati nome_pacchetto" directory.

Se si desidera memorizzare qualcosa in quella memoria cache,

File cacheDir = new File(this.getCacheDir(), "temp"); 
if (!cacheDir.exists()) 
    cacheDir.mkdir(); 

dove questo è contesto.

1

Per creare directory sul telefono memoria di storage primario (la memoria interna in generale) si dovrebbe usare codice seguente. Si prega di notare che in ExternalStorage Environment.getExternalStorageDirectory() non si riferisce necessariamente al sdcard, restituisce la memoria di archiviazione di telefono principale

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

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

Directory creata usando questo codice saranno visibili per l'utente del telefono. L'altro metodo (come nella risposta accettata) crea la directory in posizione (/data/data/package.name/app_MyDirName), quindi il normale utente del telefono non sarà in grado di accedervi facilmente e quindi non dovresti usarlo per archiviare video/foto ecc

Avrete bisogno di permessi, in AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 
+0

** FALSE E MISLEADING ** - non esiste un permesso come android.permission.WRITE_INTERNAL_STORAGE –

+0

questa risposta è da maggio 2016, si prega di controllare questa autorizzazione con la versione di Android utilizzata quella volta. La versione di Android cambia così fanno le loro autorizzazioni. Funzionerà su Android 5.0 – prodev

+0

** FALSE AGAIN **. Non c'è mai ** stato ** un permesso di archiviazione interno ** - anche solo per suggerire che è per tradire un profondo e fondamentale fraintendimento dei filesystem Android. Il fatto è che le app hanno sempre il permesso di ** la propria ** cartella di archiviazione interna. –

Problemi correlati