Como escribir y leer un archivo de Texto en Android
Hola amigos comenzaremos con este simple tutorial en el cual les explicare como crear una aplicación que nos permite escribir y leer un archivo de texto en nuestra aplicación Android.Como crear un Proyecto en Android Studio
Vamos a crear un proyecto en Android estudio para poder continuar con este ejemplo vamos a seguir el siguiente link. (Aquí).Diseño de nuestra aplicación Android
Vamos a crear el diseño para nuestra aplicación para tener un poco claro que controles vamos a utilizar para escribir y leer el archivo de texto.<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<RelativeLayout
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtInput"
android:hint="Escribe algo que almacenar"
android:gravity="top" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Guardar"
android:layout_weight="1"
android:id="@+id/btnSave"
android:layout_below="@+id/txtInput" />
<Button
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Leer"
android:id="@+id/btnRead"
android:layout_below="@+id/txtInput"
android:layout_toRightOf="@+id/btnSave"
android:layout_toEndOf="@+id/btnSave" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/txtContent"
android:layout_alignRight="@+id/txtInput"
android:layout_alignEnd="@+id/txtInput"
android:scrollIndicators="bottom|right"
android:editable="false" />
</LinearLayout>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
El resultado visual nos quedaría de la siguiente forma.Y continuaremos con la siguiente parte poner mucha atención a cada linea de código siguiente para entender bien el ejemplo.
Código para escribir y leer un archivo de texto en Android
Vamos a crear el código para nuestra aplicación primeramente comenzaremos creando una clase a la cual llamaremos ArchivoHelper.Y escribiremos el siguiente código.
import android.content.Context;
import android.os.Environment;
import android.util.Log;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class ArchivoHelper {
final static String fileName = "data.txt";
final static String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/instinctcoder/readwrite/" ;
final static String TAG = ArchivoHelper.class.getName();
// Leer información del archivo de Texto
public static String ReadFile( Context context){
String line = null;
try {
FileInputStream fileInputStream = new FileInputStream (new File(path + fileName));
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
while ( (line = bufferedReader.readLine()) != null )
{
stringBuilder.append(line + System.getProperty("line.separator"));
}
fileInputStream.close();
line = stringBuilder.toString();
bufferedReader.close();
}
catch(FileNotFoundException ex) {
Log.d(TAG, ex.getMessage());
}
catch(IOException ex) {
Log.d(TAG, ex.getMessage());
}
return line;
}
// Salvar información en el archivo de text
public static boolean saveToFile( String data){
try {
new File(path ).mkdir();
File file = new File(path+ fileName);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fileOutputStream = new FileOutputStream(file,true);
fileOutputStream.write((data + System.getProperty("line.separator")).getBytes());
return true;
} catch(FileNotFoundException ex) {
Log.d(TAG, ex.getMessage());
} catch(IOException ex) {
Log.d(TAG, ex.getMessage());
}
return false;
}
}
Y por ultimo abriremos nuestra clase MainActivity para terminal con el siguiente código.
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
Button btnRead , btnSave;
EditText txtInput;
TextView txtContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtContent = (TextView) findViewById(R.id.txtContent);
txtInput = (EditText) findViewById(R.id.txtInput);
btnRead = (Button) findViewById(R.id.btnRead);
btnRead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtContent.setText(ArchivoHelper.ReadFile(MainActivity.this));
}
});
btnSave = (Button) findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ArchivoHelper.saveToFile( txtInput.getText().toString())){
Toast.makeText(MainActivity.this,"Saved to file",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"Error save file!!!",Toast.LENGTH_SHORT).show();
}
}
});
}
}
Y por ultimo para que estas acciones funciones deberemos añadir el siguiente permiso en nuestro archivo AndroidManifest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Y luego con esto finalizamos.
Como crear un emulador AVD en Android(Aquí)
Con esto podremos ver en ejecución el resultado de nuestra aplicación.
No hay comentarios:
Publicar un comentario