2013-04-05 4 views
5

Я не могу получить методы для создания папки во внутренней памяти,Создание папок во внутренней памяти

я прошел через несколько бесед в Android create folders in Internal Memory и Problem facing in reading file from Internal memory of android. Но все же я не могу удовлетворить свои требования.

Мое требование: я хочу создать папку во внутренней памяти, там я хочу сохранить одно видео.

Заранее благодарю вас за ценные отзывы.

ответ

16

попробовать ниже

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

Я думаю, что проверка здесь не нужна. Основываясь на документации: «Каталог будет создан, если он еще не существует». – Paul

+1

if (! Mydir.exists) должно быть ** if (! Mydir.exists()) ** –

+0

как вы затем добавляете файл в этот конкретный каталог? –

6

Вот код, который я использую для создания файлов во внутренней памяти:

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

Вы понятия не имеете, как долго я искал для этого. Каждый раз, когда я пытаюсь это сделать, он создавал бы файл за пределами каталога файлов и добавлял бы «app_» в каталог. +1 От меня за отличное, малое и практичное решение. –

0

Существует «cacheDirectory» в вашем «/ PACKAGE_NAME данных» каталога.

Если вы хотите сохранить что-то в этом кэш-память,

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

где этот является контекст.

1

Чтобы создать каталог на память первичного хранения телефона (как правило, внутренней памяти) вы должны использовать следующий код. Обратите внимание, что ExternalStorage в Environment.getExternalStorageDirectory() не обязательно относится к SDCARD, она возвращает память телефона первичного хранения

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

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

каталог, созданный с помощью этого кода будет виден пользователю телефона. Другой метод (как в принятом ответе) создает каталог в местоположении (/data/data/package.name/app_MyDirName), поэтому обычный пользователь телефона не сможет легко получить к нему доступ, и поэтому вы не должны использовать его для хранения видео/фото и т.д.

вам нужны права, в AndroidManifest.xml

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

** ЛОЖЬ И ВЗАИМООТНОШЕНИЕ ** - нет такого разрешения, как android.permission.WRITE_INTERNAL_STORAGE –

+0

этот ответ с мая 2016 года, любезно проверьте это разрешение с использованием версии Android. Изменения в версии для Android, так что их разрешения. Он будет работать в Android 5.0 – prodev

+0

** FALSE AGAIN **. ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * Фактически фактом является то, что приложения всегда имеют разрешение на ** свою собственную внутреннюю папку хранения. –

Смежные вопросы