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