Android 数据存储方式有哪几种
以下内容给大家介绍Android数据存储提供了五种方式:
1、SharedPreferences
2、文件存储
3、SQLite数据库
4、ContentProvider
5、网络存储
本文主要介绍如何使用文件来存储数据。Android文件操作用到的是Java.IO中的FileOutputStream和FileInputStream类。
一、存储文件
首先实例化一个FileOutputStream。
FileOutputStreamfoStream=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。
FileInputStreamfiStream=openFileInput(fileName)
然后调用fiStream.read()即可
intlen=fiStream.available();
byte[]buffer=newbyte[len];
fiStream.read(buffer)
最后,将文本显示并关闭读文件流
etContent.setText(newString(buffer));
Toast.makeText(MainActivity.this,"读取成功",Toast.LENGTH_SHORT).show();
fiStream.close();
三、完整代码
importandroid.support.v.app.AppCompatActivity; importandroid.os.Bundle; importandroid.view.View; importandroid.widget.Button; importandroid.widget.EditText; importandroid.widget.Toast; importjava.io.FileInputStream; importjava.io.FileOutputStream; publicclassMainActivityextendsAppCompatActivity{ privateEditTextetName; privateEditTextetContent; privateButtonbtnWrite; privateButtonbtnRead; privateStringfileName=""; privateStringfileContent=""; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etName=(EditText)findViewById(R.id.etName); etContent=(EditText)findViewById(R.id.etContent); btnWrite=(Button)findViewById(R.id.btnWrite); btnRead=(Button)findViewById(R.id.btnRead); btnWrite.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewview){ fileName=etName.getText().toString(); fileContent=etContent.getText().toString(); try{ FileOutputStreamfoStream=openFileOutput(fileName,MODE_PRIVATE); byte[]buffer=fileContent.getBytes(); foStream.write(buffer); Toast.makeText(MainActivity.this,"写入成功",Toast.LENGTH_SHORT).show(); foStream.flush(); foStream.close(); }catch(Exceptione){ e.printStackTrace(); } } }); btnRead.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewview){ fileName=etName.getText().toString(); try{ FileInputStreamfiStream=openFileInput(fileName); intlen=fiStream.available(); byte[]buffer=newbyte[len]; fiStream.read(buffer); etContent.setText(newString(buffer)); Toast.makeText(MainActivity.this,"读取成功",Toast.LENGTH_SHORT).show(); fiStream.close(); }catch(Exceptione){ e.printStackTrace(); } } }); } } <RelativeLayoutxmlns: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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"tools:context=".MainActivity"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/etName" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:text="文件名"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/etContent" android:layout_below="@+id/etName" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:text="文件内容"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" android:id="@+id/btnWrite" android:layout_alignTop="@+id/btnRead" android:layout_toLeftOf="@+id/btnRead" android:layout_toStartOf="@+id/btnRead"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="读取" android:id="@+id/btnRead" android:layout_below="@+id/etContent" android:layout_alignParentRight="true" android:layout_alignParentEnd="true"/> </RelativeLayout>