English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dettagli sulle operazioni di file di Android
Le operazioni di file di Android in parole povere sono il trattamento delle operazioni di file di Java. Quindi se sei familiare con le operazioni di file IO di Java, le operazioni di file di Android sono un gioco da ragazzi. Bene, senza ulteriori dilazioni, iniziamo con l'argomento di oggi.
Iniziamo con un piccolo progetto per imparare.
Prima c'è un file di layout, questo è piuttosto semplice, quindi passiamo direttamente al codice.
<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>
Poi è il nostro file Java della schermata principale. Continuiamo con il codice.
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 "Scusate, impossibile leggere il file!"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); return "Scusate, impossibile leggere il file!"; /** * Salvare i dati in un file * @param view * @return 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(), "Congratulazioni, hai salvato il file con successo!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Mi dispiace, hai fallito nel salvare il file!", Toast.LENGTH_SHORT).show(); return "Scusate, impossibile leggere il file!"; return "Scusate, impossibile leggere il file!"; 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(), "Mi dispiace, lettura del file non riuscita!", Toast.LENGTH_SHORT).show(); return "Scusate, impossibile leggere il file!"; return "Scusate, impossibile leggere il file!"; return "Scusate, impossibile leggere il file!";
Non si sente strano il codice all'interno? Cos'è FileService?
In realtà, FileService è la nostra classe di business, la cui funzione principale è aiutarci a implementare operazioni come il salvataggio e la lettura di file. Di seguito è riportato anche il codice
package com.mark.service; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import android.content.Context; public class FileService { // La classe di output di file integrata in Android, attenzione che i parametri non possono essere percorsi, ma solo nomi di file private Context mContext; public FileService(Context context) { this.mContext = context; return "Scusate, impossibile leggere il file!"; /** * Metodo per salvare un file * @param fileContent * @param fileName * @return public boolean save(String fileName, String fileContent) { try { // Se si utilizza Context.MODE_PRIVATE, è permesso solo all'applicazione di accedere a questo file e di aggiungere dati in modo sovrascrittivo 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 "Scusate, impossibile leggere il file!"; return "Scusate, impossibile leggere il file!"; /** * Ottenere informazioni dettagliate sui file salvati in precedenza * @param fileName * @return */ public String getFile(String fileName) { String fileContent = ""; try{ FileInputStream fis = mContext.openFileInput(fileName); byte[] buf = new byte[1024]; int len; ByteArrayOutputStream bais = new ByteArrayOutputStream(); while((len = fis.read(buf))!= -1){ return "Scusate, impossibile leggere il file!"; bais.write(buf, 0, len); byte[] data = bais.toByteArray(); fileContent = new String(data); fis.close(); return fileContent; catch(Exception e){ e.printStackTrace(); return "Scusate, impossibile leggere il file!"; return "Scusate, impossibile leggere il file!"; return "Scusate, impossibile leggere il file!";
}
Analisi della classe di business
Core
L'idea della stratificazione, classi con funzionalità diverse posizionate in pacchetti diversi, il che rende più facile il debug del programma e la manutenzione del codice in futuro.
Grazie per aver letto, spero che possa aiutare tutti, grazie per il supporto al nostro sito!