Руководство Android Internal Storage

1- Android Internal Storage

Android Internal Storage: Это место хранения личных данных каждого приложения, эти данные хранятся и используются этим же приложением. Другие приложения не имеют доступа. Обычно, когда приложение удаляется с устройства Android, сязанные файлы данных так же будут удалены.
Еще одна особенность, это при работе с файлами данных во Внутренней памяти, вы можете работать только с простыми файлами, и не сможете работать с файлами имеющими ссылку.

Открыть файл и написать.

// Is a simple file name.
// Note!! Do not allow the path.
String simpleFileName ="note.txt";


// Open Stream to write file.
FileOutputStream out = openFileOutput(simpleFileName, MODE_PRIVATE);
У вас есть 4 варианта записи:
Режим Описание
MODE_PRIVATE Это режим по умолчанию, написанный файл используется только приложением который создал этот файл, или имеющий тот же User ID.
MODE_APPEND Режим добавления данных в существующий файл.
MODE_ENABLE_WRITE_AHEAD_LOGGING  
MODE_WORLD_READABLE Эти режими очень опасны. Похожи на дыру в безопасности Android, лучше не использовать, вы можете использовать заменяющие техники как:
  • ContentProvider
  • BroadcastReceiver
  • Service
MODE_WORLD_WRITEABLE
MODE_MULTI_PROCESS Режим позволяет запись нескольких процессов (process)  в файл. Но мы не рекомендуем использовать этот режим потому что он не работает на некоторых версиях Android. ы можете использовать заменяющие техники как:
  • ContentProvider

Открыть файл прочитать данные:

// Is a simple file name.
// Note!! Do not allow the path.
String simpleFileName = "note.txt";

// Open stream to read file.
FileInputStream in = this.openFileInput(simpleFileName);

2- Пример чтения и записи данных во внутренней памяти

Теперь вы можете создать пример записи данных в файл, который будет сохранен во внутреннй памяти, и читать данные из этого файла.
Создать project с названием  InternalStorageDemo.
Интерфейс приложения:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="org.o7planning.internalstoragedemo.MainActivity">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:id="@+id/editText"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="120dp"
        android:id="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/editText"
        android:layout_alignRight="@+id/editText"
        android:layout_alignEnd="@+id/editText" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save To File"
        android:id="@+id/button_save"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="43dp"
        android:layout_marginStart="43dp"
        android:layout_marginTop="63dp" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Read File"
        android:id="@+id/button_read"
        android:layout_alignTop="@+id/button_save"
        android:layout_toRightOf="@+id/button_save"
        android:layout_toEndOf="@+id/button_save" />
   
</RelativeLayout>
MainActivity.java
package org.o7planning.internalstoragedemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

public class MainActivity extends AppCompatActivity {

    private Button saveButton;
    private Button readButton;

    private TextView textView;
    private EditText editText;

    // Is a simple file name.
    // Note!! Do not allow the path.
    private String simpleFileName = "note.txt";

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

        this.saveButton = (Button) this.findViewById(R.id.button_save);
        this.readButton = (Button) this.findViewById(R.id.button_read);
        this.textView = (TextView) this.findViewById(R.id.textView);
        this.editText = (EditText) this.findViewById(R.id.editText);

        this.saveButton.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                saveData();
            }
        });

        this.readButton.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                readData();
            }
        });
    }


    private void saveData() {
        String data = this.editText.getText().toString();
        try {
            // Open Stream to write file.
            FileOutputStream out = this.openFileOutput(simpleFileName, MODE_PRIVATE);
            // Ghi dữ liệu.
            out.write(data.getBytes());
            out.close();
            Toast.makeText(this,"File saved!",Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(this,"Error:"+ e.getMessage(),Toast.LENGTH_SHORT).show();
        }
    }

    private void readData() {
        try {
            // Open stream to read file.
            FileInputStream in = this.openFileInput(simpleFileName);

            BufferedReader br= new BufferedReader(new InputStreamReader(in));

            StringBuilder sb= new StringBuilder();
            String s= null;
            while((s= br.readLine())!= null)  {
                sb.append(s).append("\n");
            }
            this.textView.setText(sb.toString());

        } catch (Exception e) {
            Toast.makeText(this,"Error:"+ e.getMessage(),Toast.LENGTH_SHORT).show();
        }
    }

}
Запуск приложения:
Используйте  "Android Device Manager", чтобы посмотреть созданный файл в системе.
Смотрите далее про   "Инструмент контроля Android - Android Device Manager":