Ficheros en Android

Manejo de ficheros

Gestión de datos (2 – Ficheros)

I/O Streams

Lectura y Escritura de Ficheros en Java

Cómo acceder a archivos específicos de la app

File directory = getApplicationContext().getFilesDir();
mostrarMensaje(directory.toString());

Ejemplo: Ficheros en memoria interna

Código de FicherosMemoriaInterna

Ejemplo: Ficheros en memoria externa

Código de MemoriaExterna

Ejemplo: Permiso en memoria externa

Añadir el permiso al manifiesto:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

build.gradle

android {
    compileSdkVersion 28
    buildToolsVersion "30.0.2"

    buildFeatures {
        viewBinding true
    }

layout

MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    public static final String FICHERO = "ficheroExterna.txt";
    private static final int REQUEST_WRITE = 1;
    private ActivityMainBinding binding;

    private Memoria memoria;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        binding = ActivityMainBinding.inflate(getLayoutInflater());
        View view = binding.getRoot();
        setContentView(view);

        binding.botonEscribir.setOnClickListener(this);
        binding.botonLeer.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        // Si pulsamos en el botón escribir
        if (view == binding.botonEscribir)
            guardar();
        // Si pulsamos en el botón leer
        else if (view == binding.botonLeer)
            leer();
    }

Cómo solicitar permiso:

public void guardar() {
    String permiso = Manifest.permission.WRITE_EXTERNAL_STORAGE;

    // comprobar los permisos
    if (ActivityCompat.checkSelfPermission(this, permiso) != PackageManager.PERMISSION_GRANTED) {
        // pedir los permisos necesarios, porque no están concedidos
        ActivityCompat.requestPermissions(this, new String[]{permiso}, REQUEST_WRITE);
        // Cuando se cierre el cuadro de diálogo se ejecutará onRequestPermissionsResult
    } else {
        // Permisos ya concedidos
        escribir();
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    String permiso = Manifest.permission.WRITE_EXTERNAL_STORAGE;

    // chequeo los permisos de nuevo
    switch (requestCode) {
        case REQUEST_WRITE:
            if (ActivityCompat.checkSelfPermission(this, permiso) == PackageManager.PERMISSION_GRANTED) {
                // permiso concedido
                escribir();
            } else {
                // no hay permiso
                mostrarMensaje("No hay permiso para escribir en la memoria externa");
            }
            break;
    }
}

private void mostrarMensaje(String texto) {
    Toast.makeText(this, texto, Toast.LENGTH_SHORT).show();
}

clase Memoria

public class Memoria {

    public static boolean escribirExterna(String fichero, String cadena) throws IOException{

    }

    private static boolean escribir(File fichero, String cadena) throws IOException {

    }

    public static String mostrarPropiedades(File fichero) {

    }

    public static String mostrarPropiedadesExterna(String fichero) {

    }

    public static boolean disponibleEscritura() {

    }

    public static boolean disponibleLectura() {

    }

    public static String leerExterna(String fichero) throws IOException {

    }

    private static String leer(File fichero) throws IOException {

    }
}

escribir

private void escribir() {

}

leer

private void leer() {

}

Descripción general del almacenamiento de archivos y datos

Para obtener información adicional sobre permisos, consulta los siguientes artículos:

Para descubrir cómo solicitar permisos, descarga las siguientes apps de ejemplo:

  • Ejemplo de RuntimePermissionsBasic de Android Java | Kotlin

 

Tarea online: Alarmas

Deja una respuesta