Android создает папки во внутренней памяти
Есть ли способ/разрешено создавать папки во внутренней памяти в Android. Пример:
- data
-- com.test.app (application main package)
---databases (database files)
---files (private files for application)
---shared_prefs (shared preferences)
---users (folder which I want to create)
Можно ли создать папку users
во внутренней памяти, например?
Ответы
Ответ 1
Я использовал это для создания папки/файла во внутренней памяти:
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.
Ответ 2
ВЫ НЕ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ ЭТО, ЕСЛИ ВЫ ХОТИТЕ ВАШИ ФАЙЛЫ, ДОСТУПНЫЕ ПОЛЬЗОВАТЕЛЕМ ЛЕГКО
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" />
Ответ 3
context.getDir( "mydir",...); Это создает файл your.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;
}