English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Descripción detallada de las operaciones de archivos en Android y un ejemplo simple

 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

  1. Ahora que estamos listos para entrar en materia. El núcleo de este proyecto pequeño está en esta clase de negocio, la razón es la siguiente:
  2. Contexto: la clase de contexto que viene con Android, que facilita obtener objetos de flujo de archivo.
  3. Se utiliza el valor de retorno para proporcionar una "reacción" al resultado de la operación, lo que facilita proporcionar una interfaz de usuario y una experiencia de uso amigable para los usuarios.

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!

Te gustará