Para mais detalhes sobre as formas de armazenar dados no Android acesse:
GOOGLE DEVELOPERS. Visão geral do armazenamento de dados e arquivos. Disponível em: https://developer.android.com/training/data-storage?hl=pt-br. Acesso em: 16 ago. 2025.
Exemplos práticos (Armazenamento interno):
-
ManipulaArquivo.java
import android.content.Context; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class ManipulaArquivo { private final Context context; public ManipulaArquivo(Context context) { this.context = context; } public void salvarArquivo(String nome, String conteudo, boolean append) throws IOException { File arquivo = new File(context.getFilesDir(), nome); try (FileOutputStream fos = new FileOutputStream(arquivo, append)) { fos.write(conteudo.getBytes()); } } public String lerArquivo(String nome) throws IOException { StringBuilder sb = new StringBuilder(); try (FileInputStream fis = context.openFileInput(nome)) { int letra; while ((letra = fis.read()) != -1) { sb.append((char) letra); } } return sb.toString(); } public void deletarArquivo(String nome) { context.deleteFile(nome); } }//class
-
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/editTextTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Digite algo" android:inputType="text" /> <Button android:id="@+id/buttonSalvar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Salvar" /> <Button android:id="@+id/buttonExcluir" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Excluir" /> </LinearLayout>
-
MainActivity.java
import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.io.IOException; public class MainActivity extends AppCompatActivity { private EditText editTextTexto; private Button buttonSalvar, buttonExcluir; private ManipulaArquivo arquivo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextTexto = findViewById(R.id.editTextTexto); buttonSalvar = findViewById(R.id.buttonSalvar); buttonExcluir = findViewById(R.id.buttonExcluir); arquivo = new ManipulaArquivo(this); Intent intent = getIntent(); if (intent != null && intent.hasExtra("texto")) { String texto = intent.getStringExtra("texto"); editTextTexto.setText(texto); } buttonSalvar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { salvarTexto(); } }); buttonExcluir.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { excluirArquivo(); } }); } private void salvarTexto() { String conteudo = editTextTexto.getText().toString(); try { arquivo.salvarArquivo("meuArq.txt", conteudo,true); Toast.makeText(this, "Texto salvo com sucesso", Toast.LENGTH_SHORT).show(); editTextTexto.setText(""); Intent intent = new Intent(MainActivity.this, SegundaActivity.class); startActivity(intent); } catch (IOException e) { e.printStackTrace(); Toast.makeText(this, "Erro ao salvar o arquivo", Toast.LENGTH_SHORT).show(); } } private void excluirArquivo() { try { arquivo.deletarArquivo("meuArq.txt"); editTextTexto.setText(""); Toast.makeText(this, "Arquivo excluído", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(this, "Erro ao excluir o arquivo", Toast.LENGTH_SHORT).show(); } } }//class
-
activity_segunda.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/textViewTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Texto da primeira tela" android:textSize="18sp" /> <Button android:id="@+id/buttonVoltar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Voltar" /> </LinearLayout>
-
SegundaActivity.java
import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.io.IOException; public class SegundaActivity extends AppCompatActivity { private TextView textViewTexto; private Button buttonVoltar; private ManipulaArquivo arquivo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_segunda); textViewTexto = findViewById(R.id.textViewTexto); buttonVoltar = findViewById(R.id.buttonVoltar); arquivo = new ManipulaArquivo(this); try { String texto = arquivo.lerArquivo("meuArq.txt"); textViewTexto.setText(texto); } catch (IOException e) { e.printStackTrace(); textViewTexto.setText("Erro ao carregar conteúdo"); Toast.makeText(this, "Erro ao ler o arquivo", Toast.LENGTH_SHORT).show(); } buttonVoltar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { voltarTela(); } }); } private void voltarTela() { Intent intent = new Intent(SegundaActivity.this, MainActivity.class); intent.putExtra("texto", textViewTexto.getText().toString()); startActivity(intent); finish(); } }//class
Exemplos práticos (Armazenamento no External Storage):
-
ManipulaArquivo.java
import android.content.Context; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class ManipulaArquivo { private final Context context; public ManipulaArquivo(Context context) { this.context = context; } private File getArquivo(String nome) { File dir = context.getExternalFilesDir(null); return new File(dir, nome); } public void salvarArquivo(String nome, String conteudo) throws IOException { File arquivo = getArquivo(nome); try (FileOutputStream fos = new FileOutputStream(arquivo,true)) { fos.write(conteudo.getBytes()); } } public String lerArquivo(String nome) throws IOException { File arquivo = getArquivo(nome); StringBuilder sb = new StringBuilder(); try (FileInputStream fis = new FileInputStream(arquivo)) { int letra; while ((letra = fis.read()) != -1) { sb.append((char) letra); } } return sb.toString(); } public void deletarArquivo(String nome) { File arquivo = getArquivo(nome); if (arquivo.exists()) { arquivo.delete(); } } }
-
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/editTextNome" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Digite algo para salvar" android:inputType="text"/> <Button android:id="@+id/buttonS" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clicar" android:text="Salvar" /> <Button android:id="@+id/buttonE" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clicar" android:text="Excluir" /> </LinearLayout>
-
MainActivity.java
import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.io.IOException; public class MainActivity extends AppCompatActivity { private EditText editTextTexto; private Button buttonSalvar, buttonExcluir; private ManipulaArquivo arquivo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextTexto = findViewById(R.id.editTextTexto); buttonSalvar = findViewById(R.id.buttonSalvar); buttonExcluir = findViewById(R.id.buttonExcluir); arquivo = new ManipulaArquivo(this); Intent intent = getIntent(); if (intent != null && intent.hasExtra("texto")) { String texto = intent.getStringExtra("texto"); editTextTexto.setText(texto); } buttonSalvar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { salvarTexto(); } }); buttonExcluir.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { excluirArquivo(); } }); } private void salvarTexto() { String conteudo = editTextTexto.getText().toString(); try { arquivo.salvarArquivo("meuArq.txt", conteudo); Toast.makeText(this, "Texto salvo com sucesso", Toast.LENGTH_SHORT).show(); editTextTexto.setText(""); Intent intent = new Intent(MainActivity.this, SegundaActivity.class); startActivity(intent); } catch (IOException e) { e.printStackTrace(); Toast.makeText(this, "Erro ao salvar o arquivo", Toast.LENGTH_SHORT).show(); } } private void excluirArquivo() { try { arquivo.deletarArquivo("meuArq.txt"); editTextTexto.setText(""); Toast.makeText(this, "Arquivo excluído", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(this, "Erro ao excluir o arquivo", Toast.LENGTH_SHORT).show(); } } }
-
activity_segunda.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/textViewTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Texto da primeira tela" android:textSize="18sp" /> <Button android:id="@+id/buttonVoltar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Voltar" /> </LinearLayout>
-
SegundaActivity.java
import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.io.IOException; public class SegundaActivity extends AppCompatActivity { private TextView textViewTexto; private Button buttonVoltar; private ManipulaArquivo arquivo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_segunda); textViewTexto = findViewById(R.id.textViewTexto); buttonVoltar = findViewById(R.id.buttonVoltar); arquivo = new ManipulaArquivo(this); try { String texto = arquivo.lerArquivo("meuArq.txt"); textViewTexto.setText(texto); } catch (IOException e) { e.printStackTrace(); textViewTexto.setText("Erro ao carregar conteúdo"); Toast.makeText(this, "Erro ao ler o arquivo", Toast.LENGTH_SHORT).show(); } buttonVoltar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { voltarTela(); } }); } private void voltarTela() { Intent intent = new Intent(SegundaActivity.this, MainActivity.class); intent.putExtra("texto", textViewTexto.getText().toString()); startActivity(intent); finish(); } }
Exemplos práticos (Armazenamento externo no Diretório Downloads):
-
ManipulaArquivo.java
import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import java.io.InputStream; import java.io.OutputStream; public class ManipulaArquivo { public static boolean salvarDados(Context context, String data) { try { ContentValues valores = new ContentValues(); valores.put(MediaStore.MediaColumns.DISPLAY_NAME, "meuArq.txt"); // Nome do arquivo valores.put(MediaStore.MediaColumns.MIME_TYPE, "text/plain"); // Tipo MIME valores.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS); Uri uri = context.getContentResolver().insert(MediaStore.Files.getContentUri("external"), valores); if (uri != null) { try (OutputStream outputStream = context.getContentResolver().openOutputStream(uri)) { if (outputStream != null) { outputStream.write(data.getBytes()); return true; } } } } catch (Exception e) { Log.e("FileManager", "Erro ao salvar o arquivo no diretório Downloads", e); } return false; } public static String lerDados(Context context) { StringBuilder dados = new StringBuilder(); Uri uri = MediaStore.Files.getContentUri("external"); String selecao = MediaStore.MediaColumns.DISPLAY_NAME + " = ?"; String[] argumentos = new String[]{"meuArq.txt"}; try (Cursor cursor = context.getContentResolver().query(uri, null, selecao, argumentos, null)) { if (cursor != null && cursor.moveToFirst()) { int idColuna = cursor.getColumnIndex(MediaStore.MediaColumns._ID); if (idColuna != -1) { long idArquivo = cursor.getLong(idColuna); Uri uriArquivo = ContentUris.withAppendedId(MediaStore.Files.getContentUri("external"), idArquivo); try (InputStream inputStream = context.getContentResolver().openInputStream(uriArquivo)) { if (inputStream != null) { int letra; while ((letra = inputStream.read()) != -1) { dados.append((char) letra); } } } } } } catch (Exception e) { Log.e("FileManager", "Erro ao ler o arquivo", e); } return dados.toString(); } public static boolean deletarDados(Context context) { Uri uri = MediaStore.Files.getContentUri("external"); String selecao = MediaStore.MediaColumns.DISPLAY_NAME + " = ?"; String[] argumentos = new String[]{"meuArq.txt"}; try { int linhasDeletadas = context.getContentResolver().delete(uri, selecao, argumentos); return linhasDeletadas > 0; } catch (Exception e) { Log.e("FileManager", "Erro ao excluir o arquivo", e); } return false; } }
-
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/editTextNome" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Digite algo para salvar" android:inputType="text"/> <Button android:id="@+id/buttonS" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clicar" android:text="Salvar" /> <Button android:id="@+id/buttonE" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clicar" android:text="Excluir" /> </LinearLayout>
-
MainActivity.java
import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText editTextNome; private Button buttonS, buttonE; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextNome = findViewById(R.id.editTextNome); buttonS = findViewById(R.id.buttonS); buttonE = findViewById(R.id.buttonE); Intent i = getIntent(); editTextNome.setText(i.getStringExtra("msg")); } public void clicar(View view) { if (view.getId() == R.id.buttonS) { String dado = editTextNome.getText().toString(); if (ManipulaArquivo.salvarDados(getApplicationContext(), dado)) { Toast.makeText(getApplicationContext(), "Salvo com sucesso", Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplicationContext(), SegundaActivity.class)); } else { Toast.makeText(getApplicationContext(), "Erro ao salvar", Toast.LENGTH_SHORT).show(); } } if (view.getId() == R.id.buttonE) { // Exclui o arquivo do diretório Downloads if (ManipulaArquivo.deletarDados(getApplicationContext())) { Toast.makeText(getApplicationContext(), "Arquivo excluído", Toast.LENGTH_SHORT).show(); editTextNome.setText(""); } else { Toast.makeText(getApplicationContext(), "Erro ao excluir", Toast.LENGTH_SHORT).show(); } } } }
-
activity_segunda.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Texto lido do arquivo" android:textSize="18sp"/> </LinearLayout>
-
SegundaActivity.java
import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import android.widget.TextView; public class SegundaActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_segunda); textView = findViewById(R.id.textView); String data = ManipulaArquivo.lerDados(getApplicationContext()); textView.setText(data); } }