目标效果:
程序运行,显示一输入框和按钮,在输入框输入内容点击按钮会提示保存成功,关闭程序,再次打开会在输入框显示刚才输入的内容,并提示英文。
1.activity_main.xml页面放置两个控件。
activity_main.xml页面:
- <RelativeLayout 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"
- tools:context=".MainActivity" >
- <EditText
- android:id="@+id/etInput"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_above="@+id/btClick"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="34dp"
- android:ems="10"
- android:hint="请输入想保存的内容" >
- <requestFocus />
- </EditText>
- <Button
- android:id="@+id/btClick"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_centerVertical="true"
- android:onClick="save"
- android:text="确定" />
- </RelativeLayout>
2.新建FileService.Java类,编写保存和读取方法。
FileService.java页面:
- package com.example.file;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import android.content.Context;
- public class FileService {
- private Context context;
- public FileService(Context context){
- this.context=context;
- }
- /*创建文件保存内容*/
- public void save(String fileName,String content){
- BufferedWriter bw=null;
- try {
- //打开文件,得到文件输出流(字节流),参数一为文件名,参数二为打开方式,为私有
- FileOutputStream fos=context.openFileOutput(fileName,context.MODE_PRIVATE);
- //OutputStreamWriter把字节流转换成字符流,BufferedWriter创建缓冲区
- bw=new BufferedWriter(new OutputStreamWriter(fos));
- //往缓冲区写入内容
- bw.write(content);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- if(bw!=null){
- bw.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- /*打开文件读取内容*/
- public String read(String fileName){
- String line;
- StringBuilder sb=new StringBuilder();
- BufferedReader br=null;
- try {
- FileInputStream fis=context.openFileInput(fileName);
- br=new BufferedReader(new InputStreamReader(fis));
- while((line=br.readLine())!=null){
- sb.append(line);
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }catch (IOException e) {
- e.printStackTrace();
- }finally{
- try {
- if(br!=null){
- br.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return sb.toString();
- }
- }
3.写完保存方法和读取方法,可以先不写MainActivity.java的代码,先写一个fileText.java类进行单元测试,检测保存方法和读取方法是否有错误。
fileText.java页面:
- package com.example.text;
- import com.example.file.FileService;
- import android.test.AndroidTestCase;
- import android.util.Log;
- public class fileText extends AndroidTestCase{
- public void saveText(){
- FileService fileservice=new FileService(getContext());
- fileservice.save("out.txt","hello!");
- }
- public void readText(){
- FileService fileservice=new FileService(getContext());
- String s=fileservice.read("out.txt");
- Log.i("MainActivity","s="+s);
- }
- }
4.编写完测试类后,开始测试运行,两个方法的运行方式都一样。
5.测试运行后,如果在左上角出现绿色横条,说明方法编写无错误。
6.最后编写MainActivity.java页面,用于将保存和读取方法和控件绑定。
MainActivity.java页面:
- package com.example.file;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private EditText etInput;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- /*获取控件方法*/
- getId();
- /*读取文件内容方法*/
- read();
- }
- /*读取文件内容方法*/
- private void read() {
- FileService fileservice=new FileService(this);
- String content=fileservice.read("myfile.txt");
- if(!content.isEmpty()){
- etInput.setText(content);
- etInput.setSelection(content.length());
- Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show();
- }
- }
- /*点击按钮调用save方法*/
- public void save(View view){
- FileService fileservice=new FileService(this);
- String content=etInput.getText().toString();
- fileservice.save("myfile.txt",content);
- Toast.makeText(this,"保存成功",Toast.LENGTH_SHORT).show();
- }
- /*获取控件方法*/
- private void getId() {
- etInput=(EditText) findViewById(R.id.etInput);
- }
- }
7.另外在Afest.xml页面添加配置信息。
8.运行后可以显示目标效果,可以从环境中看到文件保存目录,还是需要在模拟器环境下查看。
9.按照以前博文介绍的方法,可以导保存到桌面查看文件中的内容,可以发现out.txt文件中是测试时保存的“hello!”,myfile.txt文件中是运行时输入的“123456”。