Quiero guardar un archivo en el almacenamiento interno obteniendo el texto ingresado desde EditText. Luego, quiero que el mismo archivo devuelva el texto ingresado en forma de Cadena y lo guarde en otra Cadena que se utilizará más adelante.
Aquí está el código:
package com.omm.easybalancerecharge;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText num = (EditText) findViewById(R.id.sNum);
Button ch = (Button) findViewById(R.id.rButton);
TelephonyManager operator = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String opname = operator.getNetworkOperatorName();
TextView status = (TextView) findViewById(R.id.setStatus);
final EditText ID = (EditText) findViewById(R.id.IQID);
Button save = (Button) findViewById(R.id.sButton);
final String myID = ""; //When Reading The File Back, I Need To Store It In This String For Later Use
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Get Text From EditText "ID" And Save It To Internal Memory
}
});
if (opname.contentEquals("zain SA")) {
status.setText("Your Network Is: " + opname);
} else {
status.setText("No Network");
}
ch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Read From The Saved File Here And Append It To String "myID"
String hash = Uri.encode("#");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:*141*" + /*Use The String With Data Retrieved Here*/ num.getText()
+ hash));
startActivity(intent);
}
});
}
He incluido comentarios para ayudarlo a analizar mis puntos en cuanto a dónde quiero que se realicen las operaciones / variables.
Respuestas:
Espero que esto te sea útil.
Escribir archivo:
Leer archivo:
fuente
final
bloque como en la respuesta de @SharkAlleyPara aquellos que buscan una estrategia general para leer y escribir una cadena para archivar:
Primero, obtenga un objeto de archivo
Necesitarás la ruta de almacenamiento. Para el almacenamiento interno, use:
Para el almacenamiento externo (tarjeta SD), use:
Luego cree su objeto de archivo:
Escribe una cadena en el archivo
O con Google Guava
Leer el archivo a una cadena
O si estás usando Google Guava
Para completar, mencionaré
que no requiere bibliotecas, pero los puntos de referencia son 50% - 400% más lentos que las otras opciones (en varias pruebas en mi Nexus 5).
Notas
Para cada una de estas estrategias, se le pedirá que capture una IOException.
La codificación de caracteres predeterminada en Android es UTF-8.
Si está utilizando almacenamiento externo, deberá agregar a su manifiesto:
o
El permiso de escritura implica permiso de lectura, por lo que no necesita ambos.
fuente
new File(path + "/my-file-name.txt");
. Esto desafía gran parte del sentido deFile
. Usar en sunew File(path, "my-file-name.txt");
lugar.File
Está ahí por una razón. En su caso, podría omitirFile
y simplemente hacernew FileInputStream(path + "/my-file-name.txt");
, lo que no recomiendo. (¿Qué pasa sipath
contiene un final,/
por ejemplo?)fuente
context.getFilesDir()
. Simplemente puede reemplazar las ocurrencias denew File(context.getFilesDir(), fileName)
con unFile
objeto o unaString
función pasada a en lugar defileName
.Solo algunas modificaciones en la lectura de cadenas de un método de archivo para obtener más rendimiento
fuente
verifique el siguiente código.
Lectura de un archivo en el sistema de archivos.
El siguiente código es escribir el archivo en el sistema de archivos interno.
Creo que esto te ayudará.
fuente
Soy un poco principiante y luché para que esto funcione hoy.
A continuación se muestra la clase con la que terminé. Funciona, pero me preguntaba qué tan imperfecta es mi solución. De todos modos, esperaba que algunos de ustedes, personas con más experiencia, estén dispuestos a echar un vistazo a mi clase de IO y darme algunos consejos. ¡Salud!
fuente
lo primero que necesitamos son los permisos en AndroidManifest.xml
así que en una clase asyncTask Kotlin, tratamos la creación del archivo
Por supuesto, si está utilizando Android por encima de Api 23, debe manejar la solicitud para permitir la escritura en la memoria del dispositivo. Algo como esto
luego, en una actividad, ejecute la llamada.
fuente
Kotlin
fuente