Android создает папки во внутренней памяти - PullRequest
15 голосов
/ 14 ноября 2011

Есть ли способ / разрешено ли создавать папки во внутренней памяти в Android.Пример:

- 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)

Можно ли создать папку users во внутренней памяти, например?

Ответы [ 3 ]

41 голосов
/ 14 ноября 2011

Я использовал это для создания папки / файла во внутренней памяти:

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.
14 голосов
/ 28 мая 2016

ВЫ НЕ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ ЭТО, ЕСЛИ ВЫ ХОТИТЕ, ЧТОБЫ ВАМ ФАЙЛЫ ДОСТУПНЫ ДЛЯ ПОЛЬЗОВАТЕЛЯ ЛЕГКО

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

ВМЕСТО, сделайте это:

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

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

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

Каталог, созданный с использованием этого кода, будет легко виден пользователю телефона. Другой метод (упомянутый первым) создает каталог в местоположении (/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" />
4 голосов
/ 14 марта 2012

context.getDir ("mydir", ...);Это создает ваш .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;
}
...