Skip to content

Instantly share code, notes, and snippets.

@luisrenemas
Created September 22, 2017 01:04
Show Gist options
  • Save luisrenemas/bb9461b27c01742269ed62a9deae8012 to your computer and use it in GitHub Desktop.
Save luisrenemas/bb9461b27c01742269ed62a9deae8012 to your computer and use it in GitHub Desktop.
Crear directorios en almacenamiento externo y interno
//Cambia esta linea por el nombre de tu paquete app
package com.a01luisrene.tutoriales.ui;
import android.content.Context;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.a01luisrene.tutoriales.R;
import java.io.File;
public class MainActivity extends AppCompatActivity{
public static final String TAG = "logcat";
public static final String BARRA = "/";
//Recuerda que es recomendable utilizar los strings de del archivo strings.xml
public static final String SMS_DIRECTORIO = "El directorio ";
public static final String SMS_DIRECTORIO_EXISTE = " ya existe.";
public static final String SMS_DIRECTORIO_NO_EXISTE = " no existe";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Cadenas que contienen el nombre para nuestras carpetas
String nombreDirectorioAlmExternoPublico = "subdirectorio-publico-pictures";
String nombreDirectorioAlmExternoPrivado = "subdirectorio-privado-pictures";
//Cadenas que contienen el nombre de la carpeta que se creara en la memoria interna
String nombreDirectorioAlmInterno = "directorio-creado-memoria-interna";
//Función que crea el directorio almacenamiento interno
crearCarpetaAlmInterno(nombreDirectorioAlmInterno);
//Verifico si la memoria externa esta disponible
if(isExternalStorageWritable()){
Log.d(TAG, "El almacenamiento externo esta disponible :)");
//Función que crea el directorio público en el almacenamiento externo
crearDirectorioPublico(nombreDirectorioAlmExternoPublico);
//Función que crea el directorio privado en el almacenamiento externo
crearDirectorioPrivado(this, nombreDirectorioAlmExternoPrivado);
}else{
//Muestro en mensaje en el logcat si la memoria externa no esta disponible
Log.e(TAG, "El almacenamiento externo no esta disponible :(");
}
//Obtengo las rutas de las carpetas creadas
String rutaDirectorioAlmExternoPublico = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + BARRA + nombreDirectorioAlmExternoPublico;
String rutaDirectorioAlmExternoPrivado = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES) + BARRA + nombreDirectorioAlmExternoPrivado;
String rutaDirectorioInterno = getFilesDir() + BARRA + nombreDirectorioAlmInterno;
//Almaceno las carpetas creadas en las variables tipo File, con la rutas antes obtenidas
File directorioAlmExternoPublico = new File(rutaDirectorioAlmExternoPublico);
File directorioAlmExternoPrivado = new File(rutaDirectorioAlmExternoPrivado);
File directorioAlmInterno = new File(rutaDirectorioInterno);
//comprobar si la carpeta "subdirectorio-publico-pictures"
if (directorioAlmExternoPublico.exists() && directorioAlmExternoPublico.isDirectory()) {
Log.i(TAG, SMS_DIRECTORIO + nombreDirectorioAlmExternoPublico + SMS_DIRECTORIO_EXISTE);
} else {//Se ejecuta si no existe el directorio
Log.i(TAG, SMS_DIRECTORIO + nombreDirectorioAlmExternoPublico + SMS_DIRECTORIO_NO_EXISTE);
}
//comprobar si la carpeta "subdirectorio-privado-pictures"
if (directorioAlmExternoPrivado.exists() && directorioAlmExternoPrivado.isDirectory()) {
Log.i(TAG, SMS_DIRECTORIO + nombreDirectorioAlmExternoPrivado + SMS_DIRECTORIO_EXISTE);
} else {//Se ejecuta si no existe el directorio
Log.i(TAG, SMS_DIRECTORIO + nombreDirectorioAlmExternoPrivado + SMS_DIRECTORIO_NO_EXISTE);
}
//comprobar si la carpeta "directorio-creado-memoria-interna"
if (directorioAlmInterno.exists() && directorioAlmInterno.isDirectory()) {
Log.i(TAG, SMS_DIRECTORIO + nombreDirectorioAlmInterno + SMS_DIRECTORIO_EXISTE);
} else {//Se ejecuta si no existe el directorio
Log.i(TAG, SMS_DIRECTORIO + nombreDirectorioAlmInterno + SMS_DIRECTORIO_NO_EXISTE);
}
}
private boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
return Environment.MEDIA_MOUNTED.equals(state);
}
public File crearDirectorioPublico(String nombreDirectorio) {
//Crear directorio público en la carpeta Pictures.
File directorio = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), nombreDirectorio);
//Muestro un mensaje en el logcat si no se creo la carpeta por algun motivo
if (!directorio.mkdirs())
Log.e(TAG, "Error: No se creo el directorio público");
return directorio;
}
public File crearDirectorioPrivado(Context context, String nombreDirectorio) {
//Crear directorio privado en la carpeta Pictures.
File directorio =new File(
context.getExternalFilesDir(Environment.DIRECTORY_PICTURES),
nombreDirectorio);
//Muestro un mensaje en el logcat si no se creo la carpeta por algun motivo
if (!directorio.mkdirs())
Log.e(TAG, "Error: No se creo el directorio privado");
return directorio;
}
public File crearCarpetaAlmInterno(String nombreDirectorio){
File directorio = new File(getFilesDir(), nombreDirectorio);
if(!directorio.mkdirs()){
Log.e(TAG, "Error: No se creo el directorio privado");
}
return directorio;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment