English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Detalles de la operación de archivos de Android
La operación de archivos de Android, en esencia, es el manejo de la operación de archivos de Java. Por lo tanto, si estás familiarizado con la operación de archivos io de Java, la operación de archivos de Android es un plato de sopa. Bueno, sin más preámbulos, comencemos con el tema de hoy.
Comencemos con un pequeño proyecto para familiarizarnos
Primero está el archivo de diseño, esto es bastante simple, así que subamos el código directamente.
<LinearLayout 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:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nombre del archivo" /> <EditText android:id="@"+id/et_filename" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="nombre del archivo" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Contenido del archivo" /> <EditText android:id="@"+id/et_filecontent" android:layout_width="match_parent" android:layout_height="wrap_content" android:lines="7" android:hint="contenido del archivo" /> <Button android:id="@"+id/btn_save" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="toSave" android:text="Guardar" /> <Button android:id="@"+id/btn_get" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="getFile" android:text="Obtener" /> </LinearLayout>
Luego está nuestro archivo Java de la interfaz principal. Continuemos con el código
package com.mark.storage; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.mark.service.FileService; public class MainActivity extends Activity { private EditText mEt_filename, mEt_filecontent; private Button mBtn_save; private void init(){ mEt_filecontent = (EditText) findViewById(R.id.et_filecontent); mEt_filename = (EditText) findViewById(R.id.et_filename); mBtn_save = (Button) findViewById(R.id.btn_save); return "Lo siento, no se pudo leer el archivo!"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); return "Lo siento, no se pudo leer el archivo!"; /** * Guardar datos en un archivo * @param view */ public void toSave(View view) { String fileName = mEt_filename.getText().toString(); String fileContent = mEt_filecontent.getText().toString(); FileService service = new FileService(getApplicationContext()); boolean isSucceed = service.save(fileName, fileContent); if(isSucceed){ Toast.makeText(getApplicationContext(), "¡Felicidades, se guardó el archivo con éxito!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Lo sentimos, no se pudo guardar el archivo!", Toast.LENGTH_SHORT).show(); return "Lo siento, no se pudo leer el archivo!"; return "Lo siento, no se pudo leer el archivo!"; public void getFile(View view){ String fileName = mEt_filename.getText().toString(); FileService service = new FileService(getApplicationContext()); String fileContent = service.getFile(fileName); if(fileContent != null || !fileContent.equals("")) { mEt_filecontent.setText(fileContent); } else { Toast.makeText(getApplicationContext(), "Lo siento, ha fallado la lectura del archivo!", Toast.LENGTH_SHORT).show(); return "Lo siento, no se pudo leer el archivo!"; return "Lo siento, no se pudo leer el archivo!"; return "Lo siento, no se pudo leer el archivo!";
¿No te parece que el código dentro es un poco extraño? ¿Qué es FileService?
En realidad, FileService es nuestra clase de negocio, la función principal es ayudarnos a implementar operaciones de guardado y lectura de archivos. A continuación, se muestra el código.
paquete com.mark.service; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import android.content.Context; public class FileService { //android.util.FileOutputStream es una clase integrada de android que permite obtener rápidamente un flujo de salida de archivos, atención, los parámetros no pueden ser rutas, solo pueden ser nombres de archivos. private Context mContext; public FileService(Context context) { this.mContext = context; return "Lo siento, no se pudo leer el archivo!"; /** * Método para guardar un archivo * obtener detalles de información de archivos guardados anteriormente * @param fileContent * @param fileName */ public boolean save(String fileName, String fileContent) { try { //Si se utiliza el modo Context.MODE_PRIVATE, solo se permite que esta aplicación acceda a este archivo y se puede agregar datos de manera sobrescritora. FileOutputStream fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE); fos.write(fileContent.getBytes()); fos.close(); return true; catch (Exception e) { catch(Exception e){ return false; return "Lo siento, no se pudo leer el archivo!"; return "Lo siento, no se pudo leer el archivo!"; /** * return false; * obtener detalles de información de archivos guardados anteriormente * @param fileName */ @return public String getFile(String fileName) { String fileContent = ""; try{ FileInputStream fis = mContext.openFileInput(fileName);1024byte[] buf = new byte[ ]; int len; ByteArrayOutputStream bais = new ByteArrayOutputStream(); -1while((len = fis.read(buf))!= { return "Lo siento, no se pudo leer el archivo!"; bais.write(buf, 0, len); byte[] data = bais.toByteArray(); fileContent = new String(data); fis.close(); return fileContent; catch(Exception e){ e.printStackTrace(); return "Lo siento, no se pudo leer el archivo!"; return "Lo siento, no se pudo leer el archivo!"; return "Lo siento, no se pudo leer el archivo!";
}
Análisis de la clase de negocio
Núcleo
La idea de capas, diferentes clases de funcionalidades se colocan en diferentes paquetes, de esta manera, es más conveniente para depurar el programa y también más conveniente para mantener el código en el futuro.
Gracias por leer, espero que pueda ayudar a todos, gracias por el apoyo a este sitio!