Как программно записать в общедоступную директорию внутреннего хранилища файл?
Примером такой директории может быть [Download], [Documents] и т.п. Как создать новую общедоступную директорию на том же уровне, что и указанные? Или в качестве поддиректории к ним. Все мои попытки создать такую директорию и записать туда файл (выуженные из интернета) приводили либо к Exception, либо к созданию директорий или файлов по пути /Android/data/... Хотелось бы увидеть короткий рабочий пример. PS: Меня интересует именно ВНУТРЕННЕЕ хранилище, а НЕ внешняя карта памяти!
Ответы (1 шт):
Автор решения: Алексей Смирнов
→ Ссылка
Привожу реальный код:
/*
Код для создания поддиректории [MyNewDirectory] директории
[Downloads],
и создания в [MyNewDirectory] файла "MyNewFile.txt"
и записью в него строки "Привет!"
*/
File dirDownLoads =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
Log.d(LOG_TAG, "dirDownLoads.getAbsolutePath() = " +
dirDownLoads.getAbsolutePath());
File dir = new File(dirDownLoads, "MyNewDirectory");
if (!dir.exists()) {
dir.mkdirs();
Log.d(LOG_TAG, "MyNewDirectory is created!");
}
Log.d(LOG_TAG, "dir.getAbsolutePath() = " + dir.getAbsolutePath());
File file = new File(dir + File.separator + "MyNewFile.txt");
try {
if (!file.exists()) {
file.getParentFile().mkdirs();
file.createNewFile();
}
FileOutputStream outputStream = new FileOutputStream(file);
outputStream.write("Привет!".getBytes()); //
outputStream.close();
} catch (IOException e) {
Log.d(LOG_TAG, "[IOException] Problems with file!");
e.printStackTrace();
} finally{
Log.d(LOG_TAG, "file.getAbsolutePath() = " + file.getAbsolutePath());
}