Para poder tratar ficheros en el almacenamiento interno de java se realiza de la misma forma que en java nativo. Para este ejemplo se utilizará un arraylist de números que será guardado en un objeto de tipo .obj.

Lo primero que se debe hacer es dar permisos de escritura a la aplicación completa mediante declaración en el manifest, tanto para leer como para escribir

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

Una vez otorgados los permisos se creará gestionarán las acciones mediante la pulsación de los botones:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:gravity="center">

       <Button
           android:id="@+id/abrirFichero"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Abrir fichero"/>

       <Button
           android:id="@+id/guardarFichero"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Guardar fichero"/>
   </LinearLayout>
</LinearLayout>

Con los elementos llevados al .java se tratan los ficheros. Para poder leer ficheros:

private void leerFicheros() {
        try {
            FileInputStream fis = openFileInput("fichero.obj");
            ObjectInputStream ois = new ObjectInputStream(fis);
            lista = (ArrayList) ois.readObject();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            for (Object o : lista) {
                Log.v("test", o.toString());
            }
        }
    }

Para poder guardar ficheros:

private void guardarFicheros() {
        lista = new ArrayList();
        for (int i = 0; i < 10; i++) {
            lista.add(i);
        }
        try {
            FileOutputStream fos = openFileOutput("fichero.obj", Context.MODE_PRIVATE);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(lista);
            oos.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Cuando se crea el FileInputStream se utiliza el openFileOutput, pasando como argumentos el nombre del fichero que se quiere abrir y el tipo de acceso, siendo el modo privado el. normal para que solo se pueda acceder desde el paquete

FileOutputStream fos = openFileOutput("fichero.obj", Context.MODE_PRIVATE);

El código completo de la aplicación es:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    Toolbar barra;
    Button botonAbrir, botonGuardar;
    private File f;
    ArrayList lista;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        barra = findViewById(R.id.barra);
        setSupportActionBar(barra);
        getSupportActionBar().setTitle("Tratamiento de ficheros");
        instancias();
        acciones();
    }

    private void acciones() {
        botonAbrir.setOnClickListener(this);
        botonGuardar.setOnClickListener(this);
    }

    private void instancias() {
        botonAbrir = findViewById(R.id.abrirFichero);
        botonGuardar = findViewById(R.id.guardarFichero);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {

            case R.id.abrirFichero:
                leerFicheros();
                break;
            case R.id.guardarFichero:
                guardarFicheros();
                break;
        }
    }

    private void guardarFicheros() {
        lista = new ArrayList();
        for (int i = 0; i < 10; i++) {
            lista.add(i);
        }
        try {
            FileOutputStream fos = openFileOutput("fichero.obj", Context.MODE_PRIVATE);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(lista);
            oos.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void leerFicheros() {
        try {
            FileInputStream fis = openFileInput("fichero.obj");
            ObjectInputStream ois = new ObjectInputStream(fis);
            lista = (ArrayList) ois.readObject();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            for (Object o : lista) {
                Log.v("test", o.toString());
            }
        }
    }
}