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

Explication détaillée des opérations sur les fichiers Android et exemples simples

 Détails des opérations de fichiers Android

Les opérations de fichiers Android, en essence, sont le traitement des opérations de fichiers Java. Donc, si vous êtes familier avec les opérations de fichiers IO en Java, les opérations de fichiers Android sont un jeu d'enfant. Très bien, sans plus attendre, passons à la question principale de aujourd'hui.

Commençons par un petit projet pour entrer en matière.

Tout d'abord, un fichier de mise en page, ce qui est assez simple, donc allons directement au code.

<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="文件名称" />
  <EditText 
    android:id="@"+id/et_filename"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="file name"
    />
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="文件内容" />
  <EditText 
    android:id="@"+id/et_filecontent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:lines="7"
    android:hint="file content"
    />
  <Button 
    android:id="@"+id/btn_save"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="toSave"
    android:text="Save"
    />
  <Button 
    android:id="@"+id/btn_get"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="getFile"
    android:text="Get"
    />
</LinearLayout>

Ensuite, le fichier Java de notre interface principale. Continuons le code

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 "Désolé, échec de lecture du fichier !";
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
  return "Désolé, échec de lecture du fichier !";
  /**
   * Enregistrer les données dans un fichier
   * @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(), "Félicitations, vous avez réussi à sauvegarder le fichier !", Toast.LENGTH_SHORT).show();
    } else {
      Toast.makeText(getApplicationContext(), "Désolé, vous avez échoué à sauvegarder le fichier !", Toast.LENGTH_SHORT).show();
    return "Désolé, échec de lecture du fichier !";
  return "Désolé, échec de lecture du fichier !";
  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(), "Désolé, échec de lecture du fichier !", Toast.LENGTH_SHORT).show();
    return "Désolé, échec de lecture du fichier !";
  return "Désolé, échec de lecture du fichier !";
return "Désolé, échec de lecture du fichier !";

Ne trouvez-vous pas le code à l'intérieur un peu étrange ? Qu'est-ce que FileService ?

En réalité, FileService est notre classe de service,其主要功能是帮助我们实现文件的保存和读取等操作。下面也贴出代码

package com.mark.service;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import android.content.Context;
public class FileService {
  //android provides a class that can quickly obtain a file output stream, note that the parameter cannot be a path, but only a file name
  private Context mContext;
  public FileService(Context context) {
    this.mContext = context;
  return "Désolé, échec de lecture du fichier !";
  /**
   * Méthode pour sauvegarder un fichier
   * Obtenir des informations détaillées sur les fichiers enregistrés précédemment
   * @param fileContent
   * @param fileName
   */
  public boolean save(String fileName, String fileContent) {
    try {
      //Si vous utilisez le mode Context.MODE_PRIVATE, seules l'application en cours et l'ajout de données en mode couverture sont autorisés
      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 "Désolé, échec de lecture du fichier !";
  return "Désolé, échec de lecture du fichier !";
  /**
   * return false;
   * Obtenir des informations détaillées sur les fichiers enregistrés précédemment
   * @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 "Désolé, échec de lecture du fichier !";
      bais.write(buf, 0, len);
      byte[] data = bais.toByteArray();
      fileContent = new String(data);
      fis.close();
    return fileContent;
      catch(Exception e){
      e.printStackTrace();
    return "Désolé, échec de lecture du fichier !";
  return "Désolé, échec de lecture du fichier !";
return "Désolé, échec de lecture du fichier !";

}

Analyse de la classe métier

  1. Maintenant, entrons dans le sujet principal. Le cœur de ce petit projet réside dans cette classe métier, pour les raisons suivantes :
  2. Contexte : la classe de contexte intégrée d'Android, pratique pour obtenir des objets de flux de fichier.
  3. Utilisez la valeur de retour pour fournir un «feedback» sur le résultat de l'opération, ce qui facilite la fourniture d'une interface utilisateur et d'une expérience d'utilisation amicales aux utilisateurs.

Coeur

L'idée de couche, les classes de fonctionnalités différentes sont placées dans différents paquets, ce qui facilite à la fois le débogage du programme et la maintenance du code à venir.

Merci de lire, j'espère que cela pourra aider tout le monde, merci pour le soutien à notre site !

Vous pourriez aussi aimer