Desarrollo de Android: método de almacenamiento de datos 1

En Android, el almacenamiento de datos se divide en dos formas:

  1. Almacenar directamente en el directorio como un archivo

  2. Almacenar en la base de datos en formato json

  Hay dos formas de almacenar datos en archivos:

  1. Genere un archivo .txt

  2. Generar archivo xml

  Entonces, hoy, hablemos en detalle sobre el almacenamiento en forma de archivos. Dado que no se menciona la base de datos, hablaremos sobre el almacenamiento en la base de datos en formato json en cursos posteriores.

 

1. Genere un archivo .txt

La generación de archivos no es más que una parte de los flujos de entrada y salida que aprendemos en Java. Creo que es fácil de entender con una base de Java, porque es realmente simple~~

  1. El directorio generado se puede dividir en dos tipos:

    1) nativo

    2) tarjeta SD

  2. Hay cuatro formas de generar archivos .txt

    1) Use el modo MODE_PRIVATE para generar un archivo privado

    2) Use el modo MODE_PRIVATE para generar un archivo adjunto

    3) Use el modo MODE_WORLD_READABLE para generar un archivo legible

    4) Use el modo MODE_WORLD_WRITEABLE para generar un archivo grabable

 

  Antes de generar un archivo .txt, debemos comprender los permisos del archivo, como se muestra a continuación:

  1. La primera celda: indica el tipo de archivo

  2. Casilla 2-4: Indica los permisos del usuario actual

  3. Casilla 5-7: Indica los permisos del grupo al que pertenece el usuario actual

  4. Casillas 8-10: Indique los permisos que poseen otros usuarios

  5. "r": significa legible; "w": significa escribible; "x": significa ejecutable; "-": significa sin permiso, si ve "rwx", significa legible, escribible y ejecutable, y otras combinaciones

 

  Nota: Los permisos de los archivos generados por diferentes modos son diferentes, y los permisos de los tipos de archivos generados también son diferentes.

 

  Luego, estos métodos se describirán en detalle a continuación.

  1. Como se muestra en la figura, cuando hacemos clic en el botón, se activa el monitoreo del archivo. El botón aquí es un botón simple, pero recuerde establecer el atributo del evento de clic en clic ~ No todos son estúpidos, ¿verdad? ..

  

 

  

  

  1) Use el modo MODE_PRIVATE para generar un archivo privado

 

copiar codigo
//Haga clic en el botón 1 y use el modo MODE_PRIVATE para generar un archivo privado 
    public void click1(Ver v){ 
        try { 
            FileOutputStream fos = openFileOutput("private.txt", MODE_PRIVATE); 
            fos.write("private".getBytes() ) ; 
            fos.close(); 
        } catch (Excepción e) { 
            e.printStackTrace(); 
        } 
    }
copiar codigo

 

  2) Use el modo MODE_PRIVATE para generar un archivo adjunto

copiar codigo
//Haga clic en el botón 2 y use el modo MODE_PRIVATE para generar un archivo adjunto 
    public void click2(Ver v){ 
        try { 
            FileOutputStream fos = openFileOutput("appent.txt", MODE_PRIVATE); 
            fos.write("appent".getBytes()) ; 
            fos.close(); 
        } catch (Excepción e) { 
            e.printStackTrace(); 
        } 
    }
copiar codigo

 

  3) Use el modo MODE_WORLD_READABLE para generar un archivo legible

 

copiar codigo
//Haga clic en el botón 3 para usar el modo MODE_WORLD_READABLE para generar un archivo legible 
    public void click3(Ver v){ 
        try { 
            FileOutputStream fos = openFileOutput("readable.txt", MODE_WORLD_READABLE); 
            fos.write("readable".getBytes()) ; 
            fos.close(); 
        } catch (Excepción e) { 
            e.printStackTrace(); 
        } 
    }
copiar codigo

 

  4) Use el modo MODE_WORLD_WRITEABLE para generar un archivo grabable

 

copiar codigo
//Haga clic en el botón 4 y use el modo MODE_WORLD_WRITEABLE para generar un archivo de escritura 
    public void click4(View v){ 
        try { 
            FileOutputStream fos = openFileOutput("writeable.txt", MODE_WORLD_WRITEABLE); 
            fos.write("writeable".getBytes()) ; 
            fos.close(); 
        } catch (Excepción e) { 
            e.printStackTrace(); 
        } 
    }
copiar codigo

 

  Parte de la descripción del código.

  FileOutputStream: flujo de salida de archivos

  openFileOutput("private.txt", MODE_PRIVATE): openFileOutput es el flujo de salida del archivo empaquetado en Android, private.txt es el nombre del archivo generado y MODE_PRIVATE es el modo mencionado anteriormente.
 
  fos.write("private".getBytes()): escribir es qué escribir, el parámetro aquí es el contenido de texto que desea escribir, getBytes()…………… ^_^ No sé leer Java por mí mismo Conceptos básicos jajaja~~~

  
close(): cerrar el objeto de flujo
  

try-catch: Hay una excepción, inténtalo...
  
 MODE_WORLD_WRITEABLE, MODE_WORLD_READABLE: estos dos modos han quedado obsoletos... ¡no tanto por qué! Jajaja……
  

  Me siento lindo... Si realmente no sabes cómo hacerlo, ¡repasemos los conceptos básicos de Java!


  Entonces aquí hay 4 archivos como se muestra en la figura a continuación

 

  

 2. Guarde el archivo en la tarjeta SD

    1. Obtenga la ruta de la tarjeta SD:
    String sdPath = Environment.getExternalStorageDirectory().getPath() ;
    2. Agregar ruta 
    Archivo archivo = nuevo archivo (sdPath + "writeable.txt");

    ¡Entonces escribe la ruta así! Es así de simple

 3. Lea el archivo que acaba de escribir.
  Al leer el contenido del archivo, ¿cuál es la ruta que escribe, luego cuál es la ruta al leer?
copiar codigo
intente { 
            //Archivo archivo = nuevo archivo("/data/data/com.test.filereadwrite/files/readable.txt"); 
            Archivo archivo = nuevo archivo("/data/data/com.test.filereadwrite/files/writeable.txt"); 
            FileInputStream fis = new FileInputStream(archivo); 
            BufferedReader bffr = new BufferedReader(new InputStreamReader(fis)); 
            Contenido de la cadena = bffr.readLine(); 
            Toast.makeText(MainActivity.this, content, 2000).show(); 
        } catch (Excepción e) { 
            e.printStackTrace(); 
        }
copiar codigo

 

  4. Optimización de la ruta

  Todos han descubierto que estoy escribiendo directamente la ruta aquí, por lo que esta forma de escribir no es óptima, entonces, ¿cómo se puede optimizar más?, solo cambie dos líneas de código durante mucho tiempo, por ejemplo: 1.

  Obtener ruta:
  Cadena ruta = Contexto.getFilesDir().getPath();
  2. Agregue la ruta: 
  Archivo archivo = nuevo Archivo (ruta + "escribible.txt");

  Nota: Las rutas que escribimos deben optimizarse de esta manera y no deben escribirse hasta la muerte. Aquí estoy tratando de asustar a los monos jajaja~ Así que lo escribí hasta la muerte... pero el efecto es el mismo~~

Segundo, genera el archivo xml


  La generación de archivos xml se puede dividir en dos formas:

  1. Usar StringBuffer nativo para unir archivos xml

  2. Usar la clase XmlPullParser empaquetada de Android
  
  para generar archivos xml es lo mismo, pero personalmente prefiero el segundo método porque es simple, es simple , tan simple que los ingenieros de Google no necesitan escribir códigos de ejemplo en los documentos de desarrollo...

  Antes de generar xml, no olvide escribir una clase de entidad, de lo contrario, ¿cómo encapsula los datos? Dígame cómo encapsular...

  Luego agregaremos directamente el código aquí (escriba la clase de entidad usted mismo...)

copiar codigo
@Override 
    protected void onCreate(Bundle SavedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 

        //Inicializar los datos que queremos respaldar 
        smsLists = new ArrayList<Sms>(); 

        //Insertar prueba datos 
        para (int i = 0; i < 10; i++) { 
            Sms sms = new Sms(); 
            sms.setAddress("10086"+i); 
            sms.setBody("Hello"+i); 
            sms.setDate(" 201 "+i); 
            //añadir el objeto sms a la colección 
            smsLists.add(sms); 
        } 
    }
copiar codigo


  1. Use StringBuffer nativo para unir archivos xml



copiar codigo
agregar("<cuerpo>"); 
            sb.append(sms.getBody());


imprimirSeguimientoPila(); 

            //Ensamblar nodo de fecha 
            sb.append("<date>"); 
            sb.append(sms.getDate()); 
            sb.append("</date>"); 

            sb.append("</sms>" ) ; 
        } 

        // fin del nodo smss 
        sb.append("</smss>"); 

        // Guardar datos en la tarjeta SD 
        intente { 
            Archivo archivo = nuevo archivo (Environment.getExternalStorageDirectory().getPath(),"smsbackup. xml") ; 
            FileOutputStream fos = new FileOutputStream(archivo); 
            fos.write(sb.toString().getBytes()); 
            fos.close(); 
        } catch (Excepción e) { 
            e.printStackTrace(); 
        } 

    }
copiar codigo

 

  2. Use la clase XmlPullParser empaquetada de Android

 

copiar codigo
//Haga clic en el botón button2 para generar un archivo xml a través de XmlSerializer 
    public void click2(View v){ 
        try { 
            //Obtenga una instancia de la clase XmlSerializer y obtenga el XmlSerializer a través de la herramienta xml class 
            serializer = Xml.newSerializer(); 
            / /Establecer parámetro de serialización de XmlSerializer 
            File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml"); 
            FileOutputStream fos = new FileOutputStream(file); 
            serializer.setOutput(fos,"utf-8"); 
            // Comience a escribir el comienzo del documento xml 
            serializer.startDocument("utf-8", true); 
            //escriba el espacio de nombres del espacio de nombres del nodo raíz de xml 
            serializer.startTag(null, "smss"); 
            //atraviese los nodos de sms y nodos secundarios 
            for (Sms sms : smsLists ) {
                serializador.startTag(nulo, "sms"); 

                //组拼addressa节点
                serializer.startTag(null, "address"); 
                serializador.text(sms.getAddress()); 
                serializer.endTag(nulo, "dirección"); 

                //组拼body节点
                serializer.startTag(null, "body"); 
                serializador.texto(sms.getBody()); 
                serializer.endTag(nulo, "cuerpo"); 

                //组拼date节点
                serializer.startTag(null, "fecha"); 
                serializador.texto(sms.getDate()); 
                serializer.endTag(nulo, "fecha"); 

                serializador.endTag(nulo, "SMS"); 
            } 
            serializer.endTag(null, "smss"); 

            //finalizar xml end 
            serializer.endDocument(); 
            //cerrar secuencia 
            fos.close(); 

        } catch (Excepción e) { 
            e.printStackTrace(); 
        } 
    }
copiar codigo

 


  Luego, el archivo xml como se muestra a continuación se genera aquí: 3. Lea los datos en el archivo xml





  

copiar codigo
@Override 
    protected void onCreate(Bundle SavedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 

        try { 
            //Mostrar información de datos 
            TextView tv_sms = (TextView) findViewById(R.id.tv_weather); 
            // Obtén el administrador del activo a través del contexto 
            InputStream in = getAssets().open("smss.xml"); 
            //Llama al método comercial que definimos para analizar xml 
            List<Sms> smsLists = SmsParser.xmlParser(in); 

            StringBuffer sb = new StringBuffer(); 
            for (Sms sms : smsLists) { 
                sb.append(sms.toString()); 
            } 

            //Mostrar datos en TextView
            tv_sms.setText(sb.toString()); 

        } catch (Excepción e) { 
            e.printStackTrace(); 
        } 
    }
copiar codigo

 

 
  Parte de la descripción del código: 

    Aquí quiero enseñarte cómo leer los documentos de desarrollo por ti mismo... Así que vamos a los documentos de desarrollo por ti mismo... Jajaja~~
    pd: Aquí quiero explicar que no es que yo No sé cómo ser perezoso, pero todos podrán ver los documentos de desarrollo cuando la empresa se desarrolle en el futuro y, para ser honesto, hay muchas cosas en Android, simplemente es demasiado difícil recordar todo. ellos... así que espero que
    todos puedan aprender a ver los documentos de desarrollo por sí mismos... Esto puede ser considerado como un curso obligatorio para mí ~~ Porque para mí, que soy un novato, aprender a leer documentos me ahorrará mucho problemas, como que de repente hay algo que no puedo... ¿Qué debo hacer? Jajaja...



3. Resumen 
    
   1. 4 métodos y pasos para generar archivos .txt

  2. 2 métodos y pasos para generar archivos xml

  3. Leer archivos .txt

  4. Leer archivos xml

  5. Almacenar datos en este 6.

  Aprende a leer documentos de desarrollo

  7. Permisos de archivo
 



 

Supongo que te gusta

Origin blog.csdn.net/qq_33505204/article/details/78450163
Recomendado
Clasificación