English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Explicação detalhada da operação de arquivo do Android
A operação de arquivo do Android, em termos simples, é o tratamento da operação de arquivo do Java. Portanto, se você estiver familiarizado com a operação de arquivo io do Java, a operação de arquivo do Android será uma tarefa trivial. Bem, sem perder tempo, vamos começar com o tema de hoje.
Vamos começar com um pequeno projeto para nos familiarizarmos com o conceito.
Primeiro, um arquivo de layout, isso é bastante simples, então vamos direto ao ponto com o código.
<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>
Aqui está o nosso arquivo Java da interface principal. Continuemos com o 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 "Desculpe, falha ao ler o arquivo!"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); return "Desculpe, falha ao ler o arquivo!"; /** * Salvar dados em um arquivo * @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(), "Parabéns, você salvou o arquivo com sucesso!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Desculpe, você falhou ao salvar o arquivo!", Toast.LENGTH_SHORT).show(); return "Desculpe, falha ao ler o arquivo!"; return "Desculpe, falha ao ler o arquivo!"; 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(), "Desculpe, falha ao ler o arquivo!", Toast.LENGTH_SHORT).show(); return "Desculpe, falha ao ler o arquivo!"; return "Desculpe, falha ao ler o arquivo!"; return "Desculpe, falha ao ler o arquivo!";
Não parece que o código dentro seja um pouco estranho? O que é FileService?
Na verdade, FileService é nossa classe de negócios, cuja função principal é nos ajudar a implementar operações de salvamento e leitura de arquivos. Abaixo está o código também.
package com.mark.service; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import android.content.Context; public class FileService { //É uma classe padrão do Android que permite obter rapidamente um fluxo de saída de arquivo, note que o parâmetro não pode ser um caminho, mas apenas o nome do arquivo. private Context mContext; public FileService(Context context) { this.mContext = context; return "Desculpe, falha ao ler o arquivo!"; /** * Método para salvar um arquivo * Obter informações detalhadas do arquivo salvo anteriormente * @param fileContent * @param fileName */ public boolean save(String fileName, String fileContent) { try { //Se estiver usando o modo Context.MODE_PRIVATE, apenas permite que este aplicativo acesse o arquivo e adicione dados de sobreescrita. FileOutputStream fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE); fos.write(fileContent.getBytes()); fos.close(); return true; catch (Exception e) { catch(Exception e){ return "Desculpe, falha ao ler o arquivo!"; return "Desculpe, falha ao ler o arquivo!"; /** * return false; * Obter informações detalhadas do arquivo salvo 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 "Desculpe, falha ao ler o arquivo!"; bais.write(buf, 0, len); byte[] data = bais.toByteArray(); fileContent = new String(data); fis.close(); return fileContent; catch(Exception e){ e.printStackTrace(); return "Desculpe, falha ao ler o arquivo!"; return "Desculpe, falha ao ler o arquivo!"; return "Desculpe, falha ao ler o arquivo!";
}
Análise da classe de negócios
Núcleo
A ideia de camadas, diferentes classes de funcionalidades são colocadas em diferentes pacotes, o que facilita a depuração do programa e a manutenção do código futura.
Obrigado por ler, espero que isso ajude a todos, obrigado pelo apoio ao site!