código de Android para leer y guardar datos desde / hasta Almacenamiento Externo

igual almacenamiento interno, podemos también leer y guardar datos desde / hacia la memoria externa como la tarjeta SD del dispositivo real. En este artículo, vamos a aprender el uso de FileInputStream y FileOutputStream class class .

1) código XML

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout >:android="http://schemas.android.com/apk/res/android"
>:app="http://schemas.android.com/apk/res-auto"
>:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.faraz.externalstorage_example.MainActivity">
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:ems="10"
tools:layout_editor_absoluteX="65dp"
tools:layout_editor_absoluteY="106dp">
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText1"
android:ems="10"
tools:layout_editor_absoluteX="65dp"
tools:layout_editor_absoluteY="171dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentLeft="true"
android:text="File Name:"
tools:layout_editor_absoluteX="82dp"
tools:layout_editor_absoluteY="61dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_alignParentLeft="true"
android:text="Data:"
tools:layout_editor_absoluteX="197dp"
tools:layout_editor_absoluteY="61dp" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2"
android:layout_below="@+id/editText2"
android:text="save"
tools:layout_editor_absoluteX="192dp"
tools:layout_editor_absoluteY="260dp" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:text="read"
tools:layout_editor_absoluteX="65dp"
tools:layout_editor_absoluteY="260dp" />
</android.support.constraint.ConstraintLayout>

2) Archivo de Java: (MainActivity.java)

package com.example.faraz.externalstorage_example;
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;
import java.io.OutputStreamWriter;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText editTextFileName,editTextData;
Button saveButton,readButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextFileName=(EditText)findViewById(R.id.editText1);
editTextData=(EditText)findViewById(R.id.editText2);
saveButton=(Button)findViewById(R.id.button1);
readButton=(Button)findViewById(R.id.button2);
//Performing action on save button
saveButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
String filename=editTextFileName.getText().toString();
String data=editTextData.getText().toString();
FileOutputStream fos;
try {
File myFile = new File("/sdcard/"+filename);
myFile.createNewFile();
FileOutputStream fOut = new
FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new
OutputStreamWriter(fOut);
myOutWriter.append(data);
myOutWriter.close();
fOut.close();
Toast.makeText(getApplicationContext(),filename + "saved",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
}
});
//Performing action on Read Button
readButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
String filename=editTextFileName.getText().toString();
StringBuffer stringBuffer = new StringBuffer();
String aDataRow = "";
String aBuffer = "";
try {
File myFile = new File("/sdcard/"+filename);
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fIn));
while ((aDataRow = myReader.readLine()) != null) {
aBuffer += aDataRow + "n";
}
myReader.close();
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext
(),aBuffer,Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

3) Android Manifiesto código:

También tiene que proporcionar la el permiso WRITE_EXTERNAL_STORAGE en el archivo de manifiesto de Android.

<luses-permission android_name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<?xml version="1.0" encoding="utf-8"?>
<manifest >:android="http://schemas.android.com/apk/res/android"
package="com.example.faraz.externalstorage_example">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

salida

Usted tiene que ejecutar este código, ya sea en el dispositivo o en un emulador. Si se ejecuta en el emulador, entonces puede leer datos sólo si se han establecido los datos anteriores en el emulador, de lo contrario no funcionará. Si ejecuta este, el dispositivo real, leerá los datos desde la memoria externa del dispositivo.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *