你的位置:首页 > 操作系统

[操作系统]Android开发手记 数据存储二 文件存储数据


Android为数据存储提供了五种方式:

1、SharedPreferences

2、文件存储

3、SQLite数据库

4、ContentProvider

5、网络存储

 

  本文主要介绍如何使用文件来存储数据。Android文件操作用到的是Java.IO中的FileOutputStream和FileInputStream类。

一、存储文件

  首先实例化一个FileOutputStream。

FileOutputStream foStream = openFileOutput(fileName, MODE_PRIVATE);// fileName: 要写入文件的名称// MODE_PRIVATE: 为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容// MODE_APPEND: 模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.// MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取,不推荐使用// MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入,不推荐使用

  然后调用foStream.write()即可完成写入。

byte[] buffer = fileContent.getBytes();foStream.write(buffer);Toast.makeText(MainActivity.this, "写入成功",Toast.LENGTH_SHORT).show();

  最后进行一些清理工作,刷新写出流和关闭流。

foStream.flush();foStream.close();

二、读取文件

  同样的,首先实例化一个FileInputStream。

FileInputStream fiStream = openFileInput(fileName);

  然后调用fiStream.read()即可

int len = fiStream.available();byte[] buffer = new byte[len];fiStream.read(buffer);

  最后,将文本显示并关闭读文件流

etContent.setText(new String(buffer));Toast.makeText(MainActivity.this, "读取成功",Toast.LENGTH_SHORT).show();fiStream.close();

 

三、完整代码

 1 import android.support.v7.app.AppCompatActivity; 2 import android.os.Bundle; 3 import android.view.View; 4 import android.widget.Button; 5 import android.widget.EditText; 6 import android.widget.Toast; 7  8 import java.io.FileInputStream; 9 import java.io.FileOutputStream;10 11 public class MainActivity extends AppCompatActivity {12 13   private EditText etName;14   private EditText etContent;15   private Button btnWrite;16   private Button btnRead;17   private String fileName = "";18   private String fileContent = "";19 20   @Override21   protected void onCreate(Bundle savedInstanceState) {22     super.onCreate(savedInstanceState);23     setContentView(R.layout.activity_main);24 25     etName = (EditText)findViewById(R.id.etName);26     etContent = (EditText)findViewById(R.id.etContent);27     btnWrite = (Button)findViewById(R.id.btnWrite);28     btnRead = (Button)findViewById(R.id.btnRead);29 30     btnWrite.setOnClickListener(new View.OnClickListener() {31       @Override32       public void onClick(View view) {33         fileName = etName.getText().toString();34         fileContent = etContent.getText().toString();35         try {36           FileOutputStream foStream = openFileOutput(fileName, MODE_PRIVATE);37           byte[] buffer = fileContent.getBytes();38           foStream.write(buffer);39           Toast.makeText(MainActivity.this, "写入成功",Toast.LENGTH_SHORT).show();40           foStream.flush();41           foStream.close();42         }catch(Exception e){43           e.printStackTrace();44         }45       }46     });47     btnRead.setOnClickListener(new View.OnClickListener() {48       @Override49       public void onClick(View view) {50         fileName = etName.getText().toString();51         try{52           FileInputStream fiStream = openFileInput(fileName);53           int len = fiStream.available();54           byte[] buffer = new byte[len];55           fiStream.read(buffer);56           etContent.setText(new String(buffer));57           Toast.makeText(MainActivity.this, "读取成功",Toast.LENGTH_SHORT).show();58           fiStream.close();59         }catch(Exception e){60           e.printStackTrace();61         }62       }63     });64 65   }66 }

 1 <RelativeLayout ="http://schemas.android.com/apk/res/android" 2   ="http://schemas.android.com/tools" android:layout_width="match_parent" 3   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 4   android:paddingRight="@dimen/activity_horizontal_margin" 5   android:paddingTop="@dimen/activity_vertical_margin" 6   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 7  8  9   <EditText10     android:layout_width="wrap_content"11     android:layout_height="wrap_content"12     android:id="@+id/etName"13     android:layout_alignParentTop="true"14     android:layout_alignParentLeft="true"15     android:layout_alignParentStart="true"16     android:layout_alignParentRight="true"17     android:layout_alignParentEnd="true"18     android:text="文件名" />19 20   <EditText21     android:layout_width="wrap_content"22     android:layout_height="wrap_content"23     android:id="@+id/etContent"24     android:layout_below="@+id/etName"25     android:layout_alignParentLeft="true"26     android:layout_alignParentStart="true"27     android:layout_alignParentRight="true"28     android:layout_alignParentEnd="true"29     android:text="文件内容" />30 31   <Button32     android:layout_width="wrap_content"33     android:layout_height="wrap_content"34     android:text="保存"35     android:id="@+id/btnWrite"36     android:layout_alignTop="@+id/btnRead"37     android:layout_toLeftOf="@+id/btnRead"38     android:layout_toStartOf="@+id/btnRead" />39 40   <Button41     android:layout_width="wrap_content"42     android:layout_height="wrap_content"43     android:text="读取"44     android:id="@+id/btnRead"45     android:layout_below="@+id/etContent"46     android:layout_alignParentRight="true"47     android:layout_alignParentEnd="true" />48 </RelativeLayout>

activity_main.